Mik*_*key 3 sql sql-server sql-server-2008
我在这里进行了一次狩猎和google并且无法找到任何东西.
我确实来到了CONCAT功能,但因为我公司运行的SQL Server 2008不是一个选项:(
我有一个输出多列/行的查询,我想在一列中显示结果.
例:
SELECT client, owner, payer, status
FROM Main
WHERE status = 'Active'
Run Code Online (Sandbox Code Playgroud)
结果:
client | owner | payer | status
1 | 2 | 3 | Active
10 | 11 | 12 | Active
Run Code Online (Sandbox Code Playgroud)
我希望它看起来像什么
ColumnX |
1
2
3
Active
10
11
12
Active
Run Code Online (Sandbox Code Playgroud)
在此先感谢您的帮助,我希望这是有道理的:)
干杯,迈克尔
Tar*_*ryn 10
你所指的是被称为UNPIVOT.这将获取列并将它们转换为行:
SELECT value, field
FROM
(
select cast(client as varchar(10)) client,
cast(owner as varchar(10)) owner,
cast(payer as varchar(10)) payer,
status
from main
where status = 'Active'
) x
unpivot
(
value
for field in (client, owner, payer, status)
) u
Run Code Online (Sandbox Code Playgroud)
该UNPIVOT会给你值列表中的一列,然后从其他附带的列.
a所需的UNPIVOT是所有字段都具有相同的数据类型,因此您需要执行数据类型的转换,以便它们可以显示在同一列中.
您也可以使用a UNION ALL来执行此操作,但同样需要cast()数据类型相同:
SELECT cast(client as varchar(10)) value
FROM main
WHERE status = 'active'
UNION ALL
SELECT cast(owner as varchar(10)) value
FROM main
WHERE status = 'active'
UNION All
SELECT cast(payer as varchar(10)) value
FROM main
WHERE status = 'active'
UNION ALL
SELECT status
FROM main
WHERE status = 'active'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11188 次 |
| 最近记录: |