2016-08-09 15 views
0

SQL Serverの可能な組み合わせ

私は、SQL Serverのテーブルを持っている:

id, type, text 
1, 1, C# 
2, 1, VB 
3, 1, Java 
4, 1, JQuery 
5, 1, SQL 
6, 2, Basic 
7, 2, Intermediate 
8, 2, Advance 
9, 2, Not Applicable 

私が見える結果セットを返したいですこのように:事前に

Result 
C#/Basic 
C#/Intermediate 
C#/Advance 
C#/Not Applicable 
VB/Basic 
VB/Intermediate 
VB/Advance 
VB/Not Applicable 
Java/Basic 
Java/Intermediate 
Java/Advance 
Java/Not Applicable 
JQuery/Basic 
JQuery/Intermediate 
JQuery/Advance 
JQuery/Not Applicable 
SQL/Basic 
SQL/Intermediate 
SQL/Advance 
SQL/Not Applicable 

おかげ

+0

使用しているデータベースであなたの質問にタグを付けてください。 –

+0

非常に同じテーブルで結合を使用することを検討しましたか?そのスキーマを正規化することは言うまでもありません。 – mszymborski

答えて

2
Declare @Table table (id int, type int, text varchar(50)) 
Insert Into @Table values 
(1, 1, 'C#'), 
(2, 1, 'VB'), 
(3, 1, 'Java'), 
(4, 1, 'JQuery'), 
(5, 1, 'SQL'), 
(6, 2, 'Basic'), 
(7, 2, 'Intermediate'), 
(8, 2, 'Advance'), 
(9, 2, 'Not Applicable') 


Select A.Text+'/'+B.Text 
From @Table A 
Join @Table B on (A.Type=1 and B.Type=2) 
Order By 1 

戻り

C#/Advance 
C#/Basic 
C#/Intermediate 
C#/Not Applicable 
Java/Advance 
Java/Basic 
Java/Intermediate 
Java/Not Applicable 
JQuery/Advance 
JQuery/Basic 
JQuery/Intermediate 
JQuery/Not Applicable 
SQL/Advance 
SQL/Basic 
SQL/Intermediate 
SQL/Not Applicable 
VB/Advance 
VB/Basic 
VB/Intermediate 
VB/Not Applicable 
+0

私はOPが左側に 'type = 2'を望んでいないと思います。適切な 'where'基準で' cross join'を使う方が意味があります。いずれにしても、正しいアプローチのために上書きされています。 – sgeddes

+0

@sgeddes同意と修正。 –

関連する問題