行到列SQL Server查询
问题描述:
我正在编写一个将在.NET应用程序中使用的查询,因此我希望SQL Server 2008 o为我处理大部分处理,而不是应用程序将运行的客户端PC上。行到列SQL Server查询
我想从具有索引值的单个表中获取数据,基于该索引值我希望将该项放置在特定列中。
下面是一个例子:
表MAS:
MA SN Mindex
B275 7A1515 1
B276 7A1515 2
E530 7A1515 3
B291 7A1519 1
B292 7A1519 2
E535 7A1519 3
B301 7A2515 1
B302 7A2515 2
B331 7A2519 1
B332 7A2519 2
这里是输出,我想:
SN mi1 mi2 mi3
7A1515 B275 B276 E530
7A1519 B291 B292 E535
7A2515 B301 B302 null
7A2519 B331 B332 null
我试着做下面的查询,它的工作原理与项目3个索引,但如果只有两个索引,它会用随机数据填充它。
select mas1.SN, mas1.MA as mi1,mas2.MA as mi2, mas3.MA as mi3
from MAS ma1, MAS ma2, MAS ma3
where mas1.SN = '7A1515' and mas1.Mindex = '1' and mas2.Mindex = '2' and mas3.Mindex = '3'
我想知道是否有人能指出我在正确的方向,因为我仍然在写这些先进的查询相当新。
答
正如你在SQL Server 2008上,你也可以使用PIVOT
,但老式的做法往往更容易IMO。
SELECT
SN,
MAX(CASE WHEN Mindex=1 THEN MA END) AS mi1,
MAX(CASE WHEN Mindex=2 THEN MA END) AS mi2,
MAX(CASE WHEN Mindex=3 THEN MA END) AS mi3
FROM MAS
GROUP BY SN
这样做的伎俩! – jinanwow