Please start any new threads on our new
site at https://forums.sqlteam.com. We've got lots of great SQL Server
experts to answer whatever question you can come up with.
| Author |
Topic |
|
newtechhk
Starting Member
2 Posts |
Posted - 2012-01-03 : 08:52:08
|
| Bet Table:BetId, intBetName, nvarcharBettypeId, intBettype Table:BettypeId, intBettypeName, nvarcharBookMaker Table:BookMakerId, intBookMakerName, nvarcharSortOrder, intOdds Table:OddsId, intBookMakerId, intBettypeId, intBetId, intMatchId, intFixtureId, intOddsValue, nvarchar (e.g. 31/11, it is a fraction) SQL:SELECT COUNT(BetId) FROM [Bet] where BettypeId = 1It can count how many Bet under a Bet type. Result: 3SELECT * FROM [odds] where MatchId=116 and BettypeId = 1 and BetId in (SELECT BetId FROM [Bet] where BettypeId = 1)order by BookMakerid, BetIdResult:2355 1 1 1 116 116 112333 1 1 2 116 116 9/22311 1 1 3 116 116 1/42356 2 1 1 116 116 112334 2 1 2 116 116 9/22312 2 1 3 116 116 1/42357 3 1 1 116 116 92335 3 1 2 116 116 9/22313 3 1 3 116 116 2/72358 4 1 1 116 116 82336 4 1 2 116 116 9/22314 4 1 3 116 116 1/42359 5 1 1 116 116 92337 5 1 2 116 116 9/22315 5 1 3 116 116 2/72360 6 1 1 116 116 92338 6 1 2 116 116 19/42316 6 1 3 116 116 1/4Target output:BookMakerId=1, BookMakerName, BetId=1, BetName, OddsValue, BetId=2, BetName, OddsValue, BetId=3, BetName, OddsValueBookMakerId=2, BookMakerName, BetId=1, BetName, OddsValue, BetId=2, BetName, OddsValue, BetId=3, BetName, OddsValueBookMakerId=3, BookMakerName, BetId=1, BetName, OddsValue, BetId=2, BetName, OddsValue, BetId=3, BetName, OddsValueBookMakerId=4, BookMakerName, BetId=1, BetName, OddsValue, BetId=2, BetName, OddsValue, BetId=3, BetName, OddsValueBookMakerId=5, BookMakerName, BetId=1, BetName, OddsValue, BetId=2, BetName, OddsValue, BetId=3, BetName, OddsValueBookMakerId=6, BookMakerName, BetId=1, BetName, OddsValue, BetId=2, BetName, OddsValue, BetId=3, BetName, OddsValueIf the number of BetId changes, the columns (a set of BetId, BetName, OddsValue) will be adjusted.Sort by OddsValue for 3 Bet of 3 bookmakers:BetId=1, BetName, OddsValue (Highest value put in 1st row)BetId=2, BetName, OddsValue (Highest value put in 2nd row)BetId=3, BetName, OddsValue (Highest value put in 3rd row)How is the SQL? |
|
|
visakh16
Very Important crosS Applying yaK Herder
52326 Posts |
Posted - 2012-01-03 : 10:50:17
|
| [code]SELECT o.BookMakerId,bm.BookMakerName,MAX(CASE WHEN o.BetId =1 THEN o.BetId END) AS BetId1,MAX(CASE WHEN o.BetId =1 THEN b.BetName END) AS BetName1,MAX(CASE WHEN o.BetId =1 THEN o.OddsValue END) AS OddsValue1,MAX(CASE WHEN o.BetId =2 THEN o.BetId END) AS BetId2,MAX(CASE WHEN o.BetId =2 THEN b.BetName END) AS BetName2,MAX(CASE WHEN o.BetId =2 THEN o.OddsValue END) AS OddsValue2,MAX(CASE WHEN o.BetId =3 THEN o.BetId END) AS BetId3,MAX(CASE WHEN o.BetId =3 THEN b.BetName END) AS BetName3,MAX(CASE WHEN o.BetId =3 THEN o.OddsValue END) AS OddsValue3FROM [Odds] oINNER JOIN [BookMaker] bmON bm.BookMakerid = o.BookMakeridINNER JOIN [Bet] bON b.BetId = o.BetIdGROUP BY o.BookMakerId,bm.BookMakerName[/code]------------------------------------------------------------------------------------------------------SQL Server MVPhttp://visakhm.blogspot.com/ |
 |
|
|
newtechhk
Starting Member
2 Posts |
Posted - 2012-01-04 : 03:53:43
|
| I tried and modifed your SQL and has one last problem about the sorting of OddsValue which is a Fraction with nvarchar datatype:SELECT o.BookMakerId,bm.BookMakerName,MAX(CASE WHEN o.BetId=1 and MatchId=53 THEN o.BetId END) AS BetId1,MAX(CASE WHEN o.BetId=1 and MatchId=53 THEN b.BetName END) AS BetName1,MAX(CASE WHEN o.BetId=1 and MatchId=53 THEN o.OddsValue END) AS OddsValue1,MAX(CASE WHEN o.BetId=2 and MatchId=53 THEN o.BetId END) AS BetId2,MAX(CASE WHEN o.BetId=2 and MatchId=53 THEN b.BetName END) AS BetName2,MAX(CASE WHEN o.BetId=2 and MatchId=53 THEN o.OddsValue END) AS OddsValue2,MAX(CASE WHEN o.BetId=3 and MatchId=53 THEN o.BetId END) AS BetId3,MAX(CASE WHEN o.BetId=3 and MatchId=53 THEN b.BetName END) AS BetName3,MAX(CASE WHEN o.BetId=3 and MatchId=53 THEN o.OddsValue END) AS OddsValue3FROM [WinnerOdds] oINNER JOIN [BookMaker] bmON bm.BookMakerid = o.BookMakeridINNER JOIN [Bet] bON b.BetId = o.BetIdGROUP BY o.BookMakerId,bm.BookMakerNameOrder by convert(float, OddsValue1) desc, convert(float, OddsValue2) desc, convert(float, OddsValue3) descIt throws the following errors:Msg 207, Level 16, State 1, Line 17Invalid column name 'OddsValue1'.Msg 207, Level 16, State 1, Line 17Invalid column name 'OddsValue2'.Msg 207, Level 16, State 1, Line 17Invalid column name 'OddsValue3'.Here is the output without the order by statement:1 Bookies1 1 Home 16/5 2 Draw 13/5 3 Away 5/618 Bookies2 1 Home 13/5 2 Draw 23/10 3 Away 5/610 Bookies3 1 Home 3 2 Draw 12/5 3 Away 10/11How should fraction sorting be fixed? |
 |
|
|
visakh16
Very Important crosS Applying yaK Herder
52326 Posts |
Posted - 2012-01-04 : 06:07:35
|
just make itSELECT *FROM(SELECT o.BookMakerId,bm.BookMakerName,MAX(CASE WHEN o.BetId=1 and MatchId=53 THEN o.BetId END) AS BetId1,MAX(CASE WHEN o.BetId=1 and MatchId=53 THEN b.BetName END) AS BetName1,MAX(CASE WHEN o.BetId=1 and MatchId=53 THEN o.OddsValue END) AS OddsValue1,MAX(CASE WHEN o.BetId=2 and MatchId=53 THEN o.BetId END) AS BetId2,MAX(CASE WHEN o.BetId=2 and MatchId=53 THEN b.BetName END) AS BetName2,MAX(CASE WHEN o.BetId=2 and MatchId=53 THEN o.OddsValue END) AS OddsValue2,MAX(CASE WHEN o.BetId=3 and MatchId=53 THEN o.BetId END) AS BetId3,MAX(CASE WHEN o.BetId=3 and MatchId=53 THEN b.BetName END) AS BetName3,MAX(CASE WHEN o.BetId=3 and MatchId=53 THEN o.OddsValue END) AS OddsValue3FROM [WinnerOdds] oINNER JOIN [BookMaker] bmON bm.BookMakerid = o.BookMakeridINNER JOIN [Bet] bON b.BetId = o.BetIdGROUP BY o.BookMakerId,bm.BookMakerName)tOrder by convert(float, OddsValue1) desc, convert(float, OddsValue2) desc, convert(float, OddsValue3) desc ------------------------------------------------------------------------------------------------------SQL Server MVPhttp://visakhm.blogspot.com/ |
 |
|
|
|
|
|
|
|