PIVOT を使用すると、次のことができます
SampleData AS ('Team1' を Team として選択、'example@sqldat .com
' E メールとして、'A' を GroupsUNION として、'Team1' を Team として選択します。 com
' E メールとして、'B' を GroupsUNION として、'Team1' を Team として選択します。 com
' E メールとして、'C' を GroupsUNION として、'Team2' を Team として選択します。 com
' E メールとして、'A' を GroupsUNION として、'Team2' を Team として選択します。 com
' E メールとして、'B' を GroupsUNION として、'Team2' を Team として選択します。 com
' as email, 'C' as Groups)SELECT Team, A, B,C FROM (SELECT * FROM SampleData) sourcePIVOT(MAX(email) FOR Groups IN ([A], [B], [C]) )as pvt コード> プレ>
プロデュース
チーム A B C----- ---------------- ---------------- ---- ------------Team1 [email protected] [email protected]
[email protected]
チーム 2 [email protected]
[email protected]
[email protected]
コード> プレ>
動作中の Data.SE の例
をご覧ください
PIVOT をサポートしていない DB では、代わりにテーブルに複数の結合を行うことができます。いずれにしても、GBN が指摘したように、集計を使用していないため、そうしたい場合があります。
SampleData AS ('Team1' を Team として選択、'example@sqldat .com
' E メールとして、'A' を GroupsUNION として、'Team1' を Team として選択します。 com
' E メールとして、'B' を GroupsUNION として、'Team1' を Team として選択します。 com
' E メールとして、'C' を GroupsUNION として、'Team2' を Team として選択します。 com
' E メールとして、'A' を GroupsUNION として、'Team2' を Team として選択します。 com
' E メールとして、'B' を GroupsUNION として、'Team2' を Team として選択します。 com
' as email, 'C' as Groups)SELECT source.Team, A.email, B.email, C.emailFROM (SELECT DISTINCT TEAM From SampleData) source LEFT JOIN SampleData A ON source.Team =A.Team AND A.GROUPS ='A' LEFT JOIN SampleData B ON source.Team =B.Team AND B.GROUPS ='B' LEFT JOIN SampleData C ON source.Team =C.Team AND C.GROUPS ='C'
プレ>
動作中の Data.SE の例
をご覧ください