首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

大侠们 给个畅快的吧

2012-10-10 
大侠们 给个痛快的吧车型 年份 月份 数量suv 2003 6月0suv 2003 7月1suv 2003 8月0suv 2003 9月3suv 2003

大侠们 给个痛快的吧
车型 年份 月份 数量
suv 2003 6月 0
suv 2003 7月 1
suv 2003 8月 0
suv 2003 9月 3
suv 2003 10月 0
suv 2003 11月 1
suv 2003 12月 2
ft 2003 6月 1
ft 2003 7月 0
ft 2003 8月 0
ft 2003 9月 1
ft 2003 10月 2
ft 2003 11月 3
ft 2003 12月 0
asd 2004 1月 2
asd 2004 2月 1
asd 2004 3月 0

查出记录为2003的的8月至2004年的2月的记录,查出以后怎么显示成下面的表

车型 8月 9月 10月 11月 12月 1月 2月  
suv 0 3 0 1 2 0 0
ft 0 1 2 3 0 0 0
asd 0 0 0 0 0 2 1

[解决办法]

SQL code
CREATE TABLE test (车型 VARCHAR(10), 年份 VARCHAR(10),月份 VARCHAR(10),数量 INT ) INSERT INTO test   SELECT 'suv', '2003', '6月', 0 UNION ALL  SELECT 'suv', '2003', '7月', 1 UNION ALL  SELECT 'suv', '2003', '8月', 0 UNION ALL  SELECT 'suv', '2003', '9月', 3 UNION ALL  SELECT 'suv', '2003', '10月', 0 UNION ALL  SELECT 'suv', '2003', '11月', 1 UNION ALL  SELECT 'suv', '2003', '12月', 2 UNION ALL  SELECT 'ft', '2003', '6月', 1 UNION ALL  SELECT 'ft', '2003', '7月', 0 UNION ALL  SELECT 'ft', '2003', '8月', 0 UNION ALL  SELECT 'ft', '2003', '9月', 1 UNION ALL  SELECT 'ft', '2003', '10月', 2 UNION ALL  SELECT 'ft', '2003', '11月', 3 UNION ALL  SELECT 'ft', '2003', '12月', 0 UNION ALL  SELECT 'asd', '2004','1月', 2 UNION ALL  SELECT 'asd', '2004', '2月', 1 UNION ALL  SELECT 'asd', '2004', '3月', 0    SELECT 车型,SUBSTRING(年份+CASE WHEN LEN(SUBSTRING(月份,1,CHARINDEX('月',月份,1)))=2 THEN '0'+月份 ELSE 月份 END, 1,LEN(年份+CASE WHEN LEN(SUBSTRING(月份,1,CHARINDEX('月',月份,1)))=2 THEN '0'+月份 ELSE 月份 END)-1) 月份,数量 INTO #t   FROM test       declare @s nvarchar(4000) set @s='' Select     @s=@s+','+quotename(SUBSTRING(月份,5,2))+'=max(case when [月份]='+quotename(月份,'''')+' then [数量] else 0 end)' from #t WHERE 月份 BETWEEN '200308' AND '200402' group BY 月份  exec('select [车型]'+@s+' from #t group by [车型]')  /* 车型         08          09          10          11          12          01          02 ---------- ----------- ----------- ----------- ----------- ----------- ----------- ----------- asd        0           0           0           0           0           2           1 ft         0           1           2           3           0           0           0 suv        0           3           0           1           2           0           0  (3 行受影响)  */ 

热点排行