2

クエリの結果に複数の行があります。

たとえば、テーブル「住所」:

Street | Number | City
----------------------
A1     | A2     | A3
B1     | B2     | B3

私が実際に欲しいのは:

Address1_Street | Address1_Number | Address1_City | Address2_Street | Address2_Number | Address2_City
------------------------------------------------------------------------------------------------------
A1              | A2              | A3            | B1              | B2              | B3

どうすればこれを達成できるか知っている人はいますか?

私は今、この点に到達することができました (他の列を使用して申し訳ありません。上の列は一例ですが、要点は理解できると思います):

select distinct
    a.ID,
    a.Name, 
    ca1.NameLine1 as Address1_NameLine1, 
    ca2.NameLine1 as Address2_NameLine1
from 
    dbo.Accounts a, 
    dbo.Addresses ca1,
    dbo.Addresses ca2
where 
        (a.ID = ca1.AccountID AND a.ID = ca2.AccountID)
    AND (a.Name = 'TEST')
    AND (ca1.ID <> ca2.ID)

しかし、私はまだ2行を取得しています... Address1がAddress2と切り替わる場所です。1つだけ入手する方法を知っている人はいますか?ありがとう!

4

2 に答える 2

5

試す:

select ID,
       max(Name) Name,
       max(case when rn=1 then NameLine1 end) Address1_NameLine1,
       max(case when rn=2 then NameLine1 end) Address1_NameLine2
from
(select a.ID,
        a.Name, 
        ca.NameLine1,
        rank() over (partition by a.ID order by ca.ID) rn
 from dbo.Accounts a 
 join dbo.Addresses ca on a.ID = ca.AccountID
 where a.Name = 'TEST') sq
group by ID
于 2013-03-08T10:13:24.847 に答える
1
select address1.* ,address2.* from
Address address1 inner join on Address address2
on address1.userid=address2.userid

データに基づいて内部結合または左結合を選択できます。

于 2013-03-08T09:13:28.207 に答える