列の異なる組み合わせを文字列に選択したい。クエリでそれを行う方法がわかりません。シナリオは以下の通り
c1 c2 c3
a 1 x
b 2 x
b 2 y
のような結果セットが欲しい
a:1:x
a:1:y
a:2:x
a:2:y
b:1:x
b:1:y
b:2:x
b:2:y
それを行う方法に関する提案はありますか?
列の異なる組み合わせを文字列に選択したい。クエリでそれを行う方法がわかりません。シナリオは以下の通り
c1 c2 c3
a 1 x
b 2 x
b 2 y
のような結果セットが欲しい
a:1:x
a:1:y
a:2:x
a:2:y
b:1:x
b:1:y
b:2:x
b:2:y
それを行う方法に関する提案はありますか?
サンプルのCREATETABLEステートメント
create table #Test( c1 char(1), c2 char(1), c3 char(1) )
insert INTO #Test
SELECT
'a', '1', 'x'
UNION ALL SELECT
'b', '2', 'x'
UNION ALL SELECT
'b', '2', 'y'
すべての異なる列値の組み合わせ
select
c1List.c1, c2List.c2, c3List.c3
from (
select DISTINCT c1 from #Test ) c1List
CROSS JOIN (
select DISTINCT c2 from #Test ) c2List
CROSS JOIN (
select DISTINCT c3 from #Test ) c3List
文字列の連結
select
c1List.c1 + ':' + c2List.c2 + ':' + c3List.c3
from (
select DISTINCT c1 from #Test ) c1List
CROSS JOIN (
select DISTINCT c2 from #Test ) c2List
CROSS JOIN (
select DISTINCT c3 from #Test ) c3List
select concat(c1,':',c2,':',c3) from
(select distinct c3 from t) as t3,
(select distinct c2 from t) as t2,
(select distinct c1 from t) as t1
select concat(c1,':',c2,':',c3) from ...