求一个SQL语句或存储过程
SELECT T_DprocStyleNo, T_DprocEchoplexQty, T_DprocMateColor
FROM TPROCESSINFO2
WHERE (T_MProcID = 29)
ORDER BY T_DprocStyleNo, T_DprocMateColor
T_DprocLineID T_DprocStyleNo T_DprocEchoplexQty T_DprocMateColor T_DprocMateSpec
------------- -------------------- --------------------- ----------------- ------------------
1 P04-2135F 635.6300 漂白 143
7 P04-2135F 663.8700 浅兰素色布 143
10 P04-2139F 34.6800 藏青 143
4 P04-2139F 1250.2100 漂白 143
8 P04-2146F 35.0200 藏青 143
9 P04-2146F 27.1300 粉红 143
3 P04-2146F 583.5800 漂白 143
2 P04-2146F 753.2400 漂白 143
6 P04-2150F 826.9800 粉红素色布 143
11 P04-2151F 31.6900 粉兰 143
5 P04-2151F 927.3200 漂白 143
(所影响的行数为 11 行)
以上是从表里查出来的数据。现在想要得到如下结果:即按T_DprocStyleNo统计,然后按颜色统计。想要得到一个这样的报表。
T_DprocStyleNo 漂白 浅兰素色布 藏青 粉红 粉红素色布 粉兰 T_DprocMateSpec 合计
-------------------- ----------------------------------------------
P04-2135F 635.6300 663.8700 143 1299.5
P04-2139F 1250.2100 34.6800 143 1284.89
P04-2146F 1336.82 35.0200 27.1300 143 1398.97
P04-2150F 826.9800 143 826.98
P04-2151F 927.3200 31.6900 143 959.01
合计 4149.98 663.87 69.7 27.13 826.98 31.69
合计先不管的话,在数据库里想要得到如下数据:
T_DprocStyleNo 漂白 浅兰素色布 藏青 粉红 粉红素色布 粉兰 T_DprocMateSpec
-------------------- ----------------------------------------------
P04-2135F 635.6300 663.8700 143
P04-2139F 1250.2100 34.6800 143
P04-2146F 1336.82 35.0200 27.1300 143
P04-2150F 826.9800 143
P04-2151F 927.3200 31.6900 143
可以实现吗? 各位前辈们,谢谢!
[解决办法]
基本的行列转换呀
[解决办法]
use testgocreate table #(T_DprocLineID int, T_DprocStyleNo nvarchar(10), T_DprocEchoplexQty numeric(18,4), T_DprocMateColor nvarchar(10), T_DprocMateSpec int)insert # select 1, 'P04-2135F', 635.6300, '漂白', 143 insert # select 7, 'P04-2135F', 663.8700, '浅兰素色布', 143 insert # select 10, 'P04-2139F', 34.6800, '藏青', 143 insert # select 4, 'P04-2139F', 1250.2100, '漂白', 143 insert # select 8, 'P04-2146F', 35.0200, '藏青', 143 insert # select 9, 'P04-2146F', 27.1300, '粉红', 143 insert # select 3, 'P04-2146F', 583.5800, '漂白', 143 insert # select 2, 'P04-2146F', 753.2400, '漂白', 143 insert # select 6, 'P04-2150F', 826.9800, '粉红素色布', 143 insert # select 11, 'P04-2151F', 31.6900, '粉兰', 143 insert # select 5, 'P04-2151F', 927.3200, '漂白', 143 godeclare @s nvarchar(4000)select @s='select [T_DprocStyleNo]=isnull(T_DprocStyleNo,''合计'')'select @s=@s+','+quotename(T_DprocMateColor)+'=sum(case when T_DprocMateColor=' +quotename(T_DprocMateColor,'''')+' then T_DprocEchoplexQty else 0 end)' from # group by T_DprocMateColorexec( @s+',T_DprocMateSpec from # group by T_DprocStyleNo,T_DprocMateSpec with rolluphaving not (grouping(T_DprocMateSpec)=1 and grouping(T_DprocStyleNo)=0)')T_DprocStyleNo 藏青 粉红 粉红素色布 粉兰 漂白 浅兰素色布 T_DprocMateSpec -------------- ---------------------------------------- ---------------------------------------- ---------------------------------------- ---------------------------------------- ---------------------------------------- ---------------------------------------- --------------- P04-2135F .0000 .0000 .0000 .0000 635.6300 663.8700 143P04-2139F 34.6800 .0000 .0000 .0000 1250.2100 .0000 143P04-2146F 35.0200 27.1300 .0000 .0000 1336.8200 .0000 143P04-2150F .0000 .0000 826.9800 .0000 .0000 .0000 143P04-2151F .0000 .0000 .0000 31.6900 927.3200 .0000 143合计 69.7000 27.1300 826.9800 31.6900 4149.9800 663.8700 NULL