CSDN SQL版常見問題之二--行轉列

原创 2009年10月11日 11:55:00

/*
--轉載請注明,謝謝
--作者:  Paoluo
--日期:  2007-08-31
--用途:  將表中的Type的數據轉為列名
*/

--創建測試環境
Create Table TEST
(OrderID Int Identity (1, 1),
 ID Int,
 Type Varchar(10),
 Score Int )

--插入數據
Insert TEST Select 1, 'A', 100
Union All Select 1, 'B', 90
Union All Select 2, 'A', 80
Union All Select 2, 'B', 85
Union All Select 2, 'C', 92
Union All Select 3, 'A', 87
GO
--測試
--察看原表數據
Select * From TEST

--如果Type是固定的
--寫出固定情況下的語句,是希望能幫助大家更好的理解動態SQL語句
--下面EXEC(@S)中執行即為此語句
Select
 ID,
 SUM(Case When Type = 'A' Then Score Else 0 End) As A,
 SUM(Case When Type = 'B' Then Score Else 0 End) As B,
 SUM(Case When Type = 'C' Then Score Else 0 End) As C
From
 TEST
Group By
 ID

--如果Type不是固定的,使用動態SQL語句
--定義變量
Declare @S Varchar(8000)
--賦初值,此句不能少
Select @S = ''
--從表中循環得到Type,並使用Type拼結語句
Select @S = @S + ', SUM (Case When Type = ''' + Type + ''' Then Score Else 0 End) As ' + Type
From TEST Group By Type
--拼結成完整的語句
Select @S = 'Select ID' + @S + ' From TEST Group By ID'
--執行動態SQL語句
EXEC(@S)
GO
--刪除測試環境
Drop Table TEST
--結果
/*
--表中原來數據
OrderID ID Type Score
1  1 A 100
2  1 B 90
3  2 A 80
4  2 B 85
5  2 C 92
6  3 A 87

--實現效果
ID A B C
1 100 90 0
2 80 85 92
3 87 0 0
*/

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Android系列之二:Android Device Monitor 文件管理的常见问题

Android Device Monitor 是 Android Studio 中用于监测模拟器或真机运行状态的一款开发者工具。但开发者在使用它的过程中往往会遇到很多问题,尤其对于新手。本文分析了实际...

android开发步步为营之73:Android开发常见问题技术点总结之二

android开发过程中常见问题技术点总结

(GPS移植三部曲)Linux下移植GPS应用程序之常见问题的分析与解决方法之二

Linux下移植GPS应用程序之常见问题的分析与解决方法之一 OS:Linux 一. 直接提供函数实现给第三方 原因:主芯片设计以及gps芯片的更改,导致gps驱动程序时常处于更新状态 演化为...

SQL行转列统计问题

今天在CSDN上看见有人提出如下的SQL统计问题,于是帮他写了一个SQL语句。问题如下:表结构如下要实现的效果如下:这个涉及行专列问题,SQL语句如下:insert into product valu...

关于sql行转列的问题

自从看《学技术的不能自废武功》这篇文章后,我深有感触,于是对自己以前学过的知识又重新温习了一次,结果终于发现了一些新的感悟,现将其感悟发表,于大家共勉: 关于 sql 行转列的感悟 (表1...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)