1

列の異なる組み合わせを文字列に選択したい。クエリでそれを行う方法がわかりません。シナリオは以下の通り

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

それを行う方法に関する提案はありますか?

4

3 に答える 3

3

サンプルの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
于 2012-12-03T12:32:09.537 に答える
1
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
于 2012-12-03T12:34:35.513 に答える
-1

select concat(c1,':',c2,':',c3) from ...

于 2012-12-03T12:28:50.317 に答える