-1

下面是我需要从中提取数据的表——我只包括了在这个例子中要使用的列:

维护表

mainkey, account
-----------------
1, 100
2, 200
3, 300

子表

linkedkeytomain, type, color
---------------------------
2, b, blue
2, y, yellow
2, r, red
2, g, green
2, w, white

我的目标是能够编写一个仅显示一行数据的选择,其中 Type = 'b' and Type = 'w' and Type = 'r' only:

例如,

Account, c1, c2, c3
---------------------
200, blue, white, red

有人可以告诉我如何获得这个复杂的选择。提前谢谢了。

布卢蒙德

4

1 回答 1

1

您的问题是您需要调整组。这是一个简单的方法:

select account,
       max(case when seqnum = 1 then color end) as color1,
       max(case when seqnum = 2 then color end) as color2,
       max(case when seqnum = 3 then color end) as color3
from (select account, color,
             row_number() over (partition by account order by color) as seqnum
      from maintable mt join
           childtable ct
           on ct.linkedkeytomain = mt.mainkey
     ) t
group by account
于 2012-07-24T18:49:00.077 回答