|
AskSQLTeam
Ask SQLTeam Question
0 Posts |
Posted - 2001-11-22 : 10:03:32
|
| Ray writes "I'm using SQL Server 2000------------------------------------------------------------------The Tables:----------------------------------------------------------------CREATE TABLE [dbo].[cm_quote] ( [quote_Id] [int] NULL , [customer_name] [nvarchar] (30)) ON [PRIMARY]GO----------------------------------------------------------------CREATE TABLE [dbo].[rate_matrix] ( [quote_id] [int] NULL , [product_cd] [nvarchar] (10) , [mrt_Id] [int] NULL , [calc_rate] [decimal] (9, 2) NULL ) ON [PRIMARY]GO----------------------------------------------------------------CREATE TABLE [dbo].[cm_product] ( [code] [char] (2) , [description] [nvarchar] (20) ,) ON [PRIMARY]GO----------------------------------------------------------------CREATE TABLE [dbo].[quote_mrt] ( [quote_id] [int] NULL , [mrt_id] [int] NULL ) ON [PRIMARY]GO------------------------------------------------------------------The Data:----------------------------------------------------------------insert into cm_quote values (1,'John Smith')GO----------------------------------------------------------------insert into quote_mrt values (1,3)insert into quote_mrt values (1,7)insert into quote_mrt values (1,9)GO----------------------------------------------------------------insert into cm_product values ('AA','SuperMed')insert into cm_product values ('BB','Traditional')insert into cm_product values ('CC','HMO-II')GO----------------------------------------------------------------insert into rate_matrix values (1,'AA',3,128.5)insert into rate_matrix values (1,'AA',7,227.5)insert into rate_matrix values (1,'AA',9,310.5)insert into rate_matrix values (1,'BB',3,135.5)insert into rate_matrix values (1,'BB',7,239.5)insert into rate_matrix values (1,'BB',9,324.5)insert into rate_matrix values (1,'CC',3,167.5)insert into rate_matrix values (1,'CC',7,251.5)insert into rate_matrix values (1,'CC',9,338.5)GO------------------------------------------------------------------Microsofts Query (or their solution)----------------------------------------------------------------SELECT [product_cd], SUM(CASE [mrt_id] WHEN 3 THEN [calc_rate] ELSE 0 END) AS [mrt_3], SUM(CASE [mrt_id] WHEN 7 THEN [calc_rate] ELSE 0 END) AS [mrt_7], SUM(CASE [mrt_id] WHEN 9 THEN [calc_rate] ELSE 0 END) AS [mrt_9]FROM [dbo].[rate_matrix] [rm] WHERE [quote_id] = 1GROUP BY [product_cd]------------------------------------------------------------------Microsofts Results (which are correct)----------------------------------------------------------------product_cd mrt_3 mrt_7 mrt_9---------- --------- --------- ---------AA 128.50 227.50 310.50 BB 135.50 239.50 324.50CC 167.50 251.50 338.50------------------------------------------------------------------My Query----------------------------------------------------------------SELECT [rm].[product_cd],[cp].[description],[rm].[mrt_id], [rm].[calc_rate]FROM [dbo].[rate_matrix] [rm] INNER JOIN [dbo].[cm_product] [cp] ON [cp].[code] = [rm].[product_cd]WHERE [rm].[quote_id] = 1GROUP BY [rm].[product_cd], [cp].[description], [rm].[calc_rate], [rm].[mrt_id]------------------------------------------------------------------My Results (without the mrt_id case statements since they are not consistent) which need to be pivoted----------------------------------------------------------------product_cd description mrt_id calc_rate ---------- -------------------- ----------- ----------- AA SuperMed 3 128.50AA SuperMed 7 227.50AA SuperMed 9 310.50BB Traditional 2 135.50BB Traditional 7 239.50 |
|