sql列转行

码奴夫人 2009-09-17 05:03:54

--创建Demo表
CREATE TABLE [Test] (
[id] [int] IDENTITY (1, 1) NOT NULL ,
[name] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[subject] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
[Source] [numeric](18, 0) NULL
) ON [PRIMARY]
GO
INSERT INTO [test] ([name],[subject],[Source]) values (N'张三',N'语文',60)
INSERT INTO [test] ([name],[subject],[Source]) values (N'李四',N'数学',70)
INSERT INTO [test] ([name],[subject],[Source]) values (N'王五',N'英语',80)
Go

要求结果
姓名: 张三 李四 王五
科目:语文 数学 英语
成绩: 60 70 80



...全文
93 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
路过
码奴夫人 2009-09-18
  • 打赏
  • 举报
回复
回答问题阿?真是的,每个正经的。
lihan6415151528 2009-09-17
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 soft_wsx 的回复:]
引用 9 楼 feixianxxx 的回复:
引用 8 楼 soft_wsx 的回复:
不难,不想写了!楼下继续!


HOHO 激情点哦~~
不是,现在很忙,没时间!
[/Quote]
码奴夫人 2009-09-17
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 soft_wsx 的回复:]
引用 9 楼 feixianxxx 的回复:
引用 8 楼 soft_wsx 的回复:
不难,不想写了!楼下继续!
HOHO 激情点哦~~
不是,现在很忙,没时间!
[/Quote]
soft_wsx 2009-09-17
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 feixianxxx 的回复:]
引用 8 楼 soft_wsx 的回复:
不难,不想写了!楼下继续!


HOHO 激情点哦~~
[/Quote]不是,现在很忙,没时间!
feixianxxx 2009-09-17
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 soft_wsx 的回复:]
不难,不想写了!楼下继续!
[/Quote]

HOHO 激情点哦~~
soft_wsx 2009-09-17
  • 打赏
  • 举报
回复
不难,不想写了!楼下继续!
soft_wsx 2009-09-17
  • 打赏
  • 举报
回复
用动态SQL
码奴夫人 2009-09-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sql77 的回复:]
SQL codeSELECT
(SELECT NAMEFROM TBWHERE NAME=N'张三')AS N'张三',
(SELECT NAMEFROM TBWHERE NAME=N'李四')AS N'李四',
(SELECT NAMEFROM TBWHERE NAME=N'李四')AS N'王五'UNIONALLSELECT
(SELECT subjectFROM TBWHERE N¡­
[/Quote]
主表中查出来的结果是不定的,正如2楼所说,要适应多记录的情况。不仅仅有这几个人。
qiushuifuye 2009-09-17
  • 打赏
  • 举报
回复
你是不是搞错了?如果说转换行列成
姓名 语文 数学 外语
张三 60 * *
李四 * 70 *
王五 80 * *
这样倒是很好弄,你要的结果,真的没得说了。
htl258_Tony 2009-09-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sql77 的回复:]
SQL codeSELECT
(SELECT NAMEFROM TBWHERE NAME=N'张三')AS N'张三',
(SELECT NAMEFROM TBWHERE NAME=N'李四')AS N'李四',
(SELECT NAMEFROM TBWHERE NAME=N'李四')AS N'王五'UNIONALLSELECT
(SELECT subjectFROM TBWHERE N¡­
[/Quote]
可以参考这个
SQL77 2009-09-17
  • 打赏
  • 举报
回复
SELECT 
(SELECT NAME FROM TB WHERE NAME=N'张三')AS N'张三',
(SELECT NAME FROM TB WHERE NAME=N'李四')AS N'李四',
(SELECT NAME FROM TB WHERE NAME=N'李四')AS N'王五'
UNION ALL
SELECT
(SELECT subject FROM TB WHERE NAME=N'张三')AS N'张三',
(SELECT subject FROM TB WHERE NAME=N'李四')AS N'李四',
(SELECT subject FROM TB WHERE NAME=N'李四')AS N'王五'
UNION ALL
SELECT
(SELECT LTRIM(Source) FROM TB WHERE NAME=N'张三')AS N'张三',
(SELECT LTRIM(Source) FROM TB WHERE NAME=N'李四')AS N'李四',
(SELECT LTRIM(Source) FROM TB WHERE NAME=N'李四')AS N'王五'
dawugui 2009-09-17
  • 打赏
  • 举报
回复
人多了,列数量不够,建议楼主三思.
dawugui 2009-09-17
  • 打赏
  • 举报
回复
恩多了,列数量不够,建议楼主三思.

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧