[英]Displaying multiple columns from a single column select statement
我正在尝试从表中提取数据并根据单列的结果显示多列。
例如,我的表有一个recordId、一个valueId 和一个值。 它看起来像这样
recordId | valueId | value
1 | 5 | 2011-03-24
2 | 5 | 2011-03-25
3 | 3 | Bobcat
4 | 3 | Backloader
5 | 4 | Mono
6 | 4 | Stereo
我正在尝试根据 valueId 创建多个列(例如 valueId 5 是加入日期,valueId 3 是车辆类型,而 valueId 4 是扬声器类型)但是每当我尝试创建自己的列时,我最终都会得到相同的数据在两个列返回。
例如,我会使用类似的东西
select recordId as Records, valueId as [Join Date], valueId as [Vehicle type], valueId as [Speaker Type], value as [Data Entered] where valueId = 5 OR valueId = 3 OR valueId = 4
这将创建正确的 header,但我将在每个值调用的每一列中获得相同的数据(例如,第一行将在加入日期、车辆类型和扬声器类型下有 2011-03-24,第 2 行将是 2011-03 -25 而不是第 3 行将是山猫)
感谢您提供的任何帮助!
编辑:感谢所有提供帮助的人。 如果可以的话,我会投赞成票,但是每当我尝试时,它都会告诉我必须登录或注册(这很奇怪,因为我已登录以编辑和批准答案...)
在不使用动态 SQL 的情况下,您可以使用以下技术 PIVOT/ROTATE 数据。 尽管它的缺点是您必须对所有值进行硬编码。
select recordId as Records,
case when valueid=5 then value else null end [Join Date],
case when valueid=3 then value else null end [Vehicle type],
case when valueId=4 then value else null end [Speaker Type]
from Table
where valueId in (5,3,4)
RecordID | Join Date | Vehicle Type | Speaker Type
1 | 2011-03-24 | null | null
2 | 2011-03-25 | null | null
3 | null | Bobcat | null
4 | null | Backloader | null
etc....
select recordId as Records,
case
when valueId = 5 then value
else null
end as [Join Date],
case
when valueId = 3 then value
else null
end as [Vehicle type],
case
when valueId = 4 then value
else null
end as [Speaker Type]
from yourTable
大概是这样的?
select recordId as Records,
case valueId when 5 then value end as [Join Date],
case valueId when 3 then value end as [Vehicle type],
case valueId when 4 then value end as [Speaker Type],
value as [Data Entered]
from YourTable
where valueId = 5 OR valueId = 3 OR valueId = 4
结果:
Records Join Date Vehicle type Speaker Type Data Entered
----------- ---------- ------------ ------------ ------------
1 2011-03-24 NULL NULL 2011-03-24
2 2011-03-25 NULL NULL 2011-03-25
3 NULL Bobcat NULL Bobcat
4 NULL Backloader NULL Backloader
5 NULL NULL Mono Mono
6 NULL NULL Stereo Stereo
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.