|
|
|
|
Blog信息
|
blog名称:四裤全输的小窝~~ 日志总数:178 评论数量:699 留言数量:198 访问次数:1160988 建立时间:2005年10月29日 | |
|
|
|
|
 |
|
|
|
|
[database]典型的列变成行
文章收藏, 网上资源, 软件技术, 电脑与网络 四裤全输 发表于 2007/3/3 14:13:57
|
--表T的数据如下
PLID QtyA 100B 150A 110C 200B 130C 140
--得到下列结果A B C210 280 340
要求用存储过程实现, 代码简单, 效率要高
CREATE TABLE T(PLID VARCHAR(2), Qty INT)
INSERT INTO TSELECT 'A', 100UNION ALL SELECT 'B', 150UNION ALL SELECT 'A', 110UNION ALL SELECT 'C', 200UNION ALL SELECT 'B', 130UNION ALL SELECT 'C', 140select * from T
DECLARE @SQL VARCHAR(8000)SET @SQL=''SELECT @SQL=@SQL + 'SUM(CASE WHEN PLID=''' + PLID + ''' THEN Qty ELSE 0 END) ' + PLID + ',' FROM TGROUP BY PLIDSET @SQL='SELECT ' + LEFT(@SQL, LEN(@SQL)-1) + ' FROM T'EXEC(@SQL)PLID Qty---- -----------A 100B 150A 110C 200B 130C 140
(6 行受影响)
A B C----------- ----------- -----------210 280 340
(1 行受影响)
|
阅读全文(5449) | 回复(1) | 编辑 | 精华 |
|
|
|
|
|
|
» 1 »
|