2016-08-09 3 views
0

Le jeu de résultat retourné doit concaténer la colonne de texte sur la base des colonnes de type:SQL Server combinaisons possibles

J'ai une table 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 

Je voudrais revenir un jeu de résultats que les regards comme ceci:

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 

Merci à l'avance

+0

S'il vous plaît marquer votre question avec la base de données que vous utilisez. –

+0

Avez-vous envisagé d'utiliser des jointures sur cette même table? Sans parler de la normalisation de ce schéma. – mszymborski

Répondre

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 

Retours

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

Je suppose que l'OP ne veut pas 'type = 2' sur le côté gauche. Peut-être plus logique d'utiliser une «jointure croisée» avec des critères «where» appropriés. De toute façon, upvoted pour une approche correcte. – sgeddes

+0

@sgeddes D'accord et modifié. –