最好是动态处理DECLARE @SQL VARCHAR(MAX)
SET @SQL='SELECT ROW_NUMBER()OVER(ORDER BY item)RN,item'
SELECT @SQL=@SQL+',SUM(CASE WHEN item='''+item+'''THEN price ELSE 0 END)['+item+']'
FROM TB
GROUP BY item
SET @SQL=@SQL+'FROM TB GROUP BY item'
EXEC(@SQL)TB换成你的表
SET @SQL='SELECT ROW_NUMBER()OVER(ORDER BY item)RN,item'
SELECT @SQL=@SQL+',SUM(CASE WHEN item='''+item+'''THEN price ELSE 0 END)['+item+']'
FROM TB
GROUP BY item
SET @SQL=@SQL+'FROM TB GROUP BY item'
EXEC(@SQL)TB换成你的表
解决方案 »
- 有SQL服务器sa和密码,怎么把数据库复制到本地SQL?
- 求一句话解决问题
- 存储过程里的问题,也不知道哪里出问题了,就是得不到我要的结果。
- sql server 2000没有服务
- sql server2000 怎么生成UUID的方法?
- 超级难SQL语句如何写,这样能用SQL语句写吗
- 请问如何在Sqlserver中定义如Long 48bit 长的数据类型?
- 怎么判断一游标是否存在?
- 我用SQL语句:SELECT * FROM TAB WHERE NAME = 'ABC',会把小写abc也选出来,如何控制只选中大写呢?
- 请问如何将数据库备份到远程客户端去?
- 求个SQL,拆分一个字段里的字符串中的数字部分,然后排序
- select 按日期编号排序
SET @SQL='SELECT ROW_NUMBER()OVER(ORDER BY No)RN,* FROM(SELECT No'
SELECT @SQL=@SQL+',ISNULL(SUM(CASE WHEN item='''+item+'''THEN price END),0)['+item+']'
FROM TB
GROUP BY item
SET @SQL=@SQL+',ISNULL(SUM(price),0)[合计]'
SET @SQL=@SQL+'FROM TB GROUP BY No)T'
EXEC(@SQL)