写一个SQL完成左边的表变成右边的表

http://zhidao.baidu.com/link?url=PMlMAYEl6DMDyLAw3T1ZOZOIu1lCj5hmCchCb1qym3rIh-hNJU1Bbw8XbjrPLWMdAFRUQJWObOlm1jv_HqZksrDYhrr39Bpgj86RONjqvXu

怎么用一条SQL从左边的表得到右边的结果

死性不改_文  |  浏览 145 次   2014-03-17 22:47
2014-03-17 23:33 最佳答案
例如你的表名为A
select A.姓名, A.成绩 as 语文, B.成绩 as 数学
from (
  select 姓名, 成绩 from A Where 科目=语文
) A
Inner join
(
  select 姓名,成绩 from A Where 科目=数学
)B on A.姓名=B.姓名

pthaihong2013 

采纳率:68% 来自团队:SQL专业团 擅长: 暂未定制

其他回答

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
DECLARE  @TestTable  TABLE
(
     Name     NVARCHAR(10),
     Cause   NVARCHAR(10),
     Score    INT
)
INSERT  @TestTable ( Name , Cause, Score)
SELECT  N '甲' , N '语文' , 1
UNION  SELECT  N '甲' , N '数学' , 2
UNION  SELECT  N '乙' , N '语文' , 3
UNION  SELECT  N '乙' , N '数学' , 4
UNION  SELECT  N '丙' , N '语文' , 5
UNION  SELECT  N '丙' , N '数学' , 6
 
SELECT  FROM  @TestTable
ORDER  BY  Score
 
SELECT  Name ,语文,数学
FROM
(
     SELECT  Name , Cause, Score  FROM  @TestTable
) p
PIVOT
(
     SUM (Score)
     FOR  Cause  IN
     (语文,数学)
AS  pvt
ORDER  BY  pvt.语文;
lanse777    |  2014-03-18 00:48
评论 
0  0


1
2
3
4
5
6
7
8
9
10
11
declare  @sql nvarchar( max )
   
set  @sql= ''   --初始化变量@sql
   
select  @sql=@sql+ ',' +科目  from  tablename  group  by  科目 --变量多值赋值
   
set  @sql=stuff(@sql,1,1, '' ) --去掉首个','
   
set  @sql= 'select * from tablename  pivot (max(分数) for 科目 in (' +@sql+ '))a'
  
exec (@sql)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值