0

次のようなテーブルがあるとします。

Person Table

ID    AccountID  Name
1        6       Billy  
2        6       Joe
3        6       Tom
4        8       Jamie
5        8       Jake
6        8       Sam

単独で動作することがわかっているクエリが 2 つあります。

Select Name Group1 from person where accountid = 6

Select Name Group2 from person where accountid = 8

しかし、単一の結果セットを次のようにしたい:

Group1   Group2

Billy    Jamie   
Joe      Jake
Tom      Same
4

2 に答える 2

3

このクライアント側を行う必要があることに同意します。ただし、T/SQL で実行できます。

select  G1.Name as Group1
,       G2.Name as Group2
from    (
        select  row_number() over (order by ID) as rn
        ,       *
        from    Group
        where   AccountID = 6
        ) as G1
full outer join
        (
        select  row_number() over (order by ID) as rn
        ,       *
        from    Group
        where   AccountID = 8
        ) as G2
on      G1.rn = G2.rn
order by
        coalesce(G1.rn, G2.rn)
于 2013-03-22T18:59:53.020 に答える
3

を使用row_number()して各行に個別の値を割り当て、次に a を使用しFULL OUTER JOINて 2 つのサブクエリを結合できます。

select t1.group1,
  t2.group2
from
(
  select name group1,
    row_number() over(order by id) rn
  from yourtable
  where accountid = 6
) t1
full outer join
(
  select name group2,
    row_number() over(order by id) rn
  from yourtable
  where accountid = 8
) t2
  on t1.rn = t2.rn;

デモで SQL Fiddle を参照してください

于 2013-03-22T19:00:45.023 に答える