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
*/

Sql,oracle数据表行转列问题

  • 2011年07月30日 23:27
  • 15KB
  • 下载

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

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

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

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

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

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

C++常见问题之二#define使用中的陷阱

一.使用#define宏应注意的问题 1.使用宏定义表达式的时候,加括号是一个好习惯 首先我们来看一段简短的代码,并试着分析其输出: #include #define Add(a,b) a...

CSDN操作系统板块常见问题

  • 2012年04月20日 10:36
  • 72KB
  • 下载

CSDN操作系统版块常见问题

  • 2009年07月03日 13:28
  • 72KB
  • 下载

SQL行转列统计问题

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

关于sql行转列的问题

自从看《学技术的不能自废武功》这篇文章后,我深有感触,于是对自己以前学过的知识又重新温习了一次,结果终于发现了一些新的感悟,现将其感悟发表,于大家共勉: 关于 sql 行转列的感悟 (表1...

sql 行转列问题总结

1、行转列 ---1、最简单的行转列 /*    问题:假设有张学生成绩表(tb)如下: 姓名 课程 分数 张三 语文 74 张三 数学 83 张三 物理 93 李四 语文 74 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章: CSDN SQL版常見問題之二--行轉列
举报原因:
原因补充:

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