2012-09-27 12 views
9

Mam kilka kolumn w tabeliJak wybrać odrębny konkretnych kolumn

Col1, Col2, Col3, Col4

Teraz chcę wybrać tak

tj. Wyróżnij się na podstawie tylko te trzy wartości.

+0

Co o 'Col4' trzeba wykonać pewną agregację na to dla każdego odrębnego wartość 3 pozostałych kolumn? –

+0

Możesz uzyskać pomoc z tego posta http://stackoverflow.com/questions/1471250/counting-distinct-over-multiple-columns –

Odpowiedz

3

Od komentarzu do innej odpowiedzi:

mogę dostać się ten Col1, COL2, Col3 i (Col4 w postaci ogranicznika)

Tak, można użyć for xml path.

select Col1, 
     Col2, 
     Col3, 
     (
     select ',' + T2.Col4 
     from YourTable T2 
     where T1.Col1 = T2.Col1 and 
       T1.Col2 = T2.Col2 and 
       T1.Col3 = T2.Col3 
     for xml path(''), type 
     ).value('substring((./text())[1], 2)', 'varchar(max)') as Col4 
from YourTable as T1 
group by T1.Col1, T1.Col2, T1.Col3 

SQL Fiddle

6

tylko GROUP BY Col1, Col2, Col3 o łącznej funkcji z col4 jak MAX, MIN itp .. tak:

SELECT Col1, Col2, Col3, MAX(Col4) 
FROM TableName 
GROUP BY Col1, Col2, Col3 
+0

To jest pole varchar, chcę tylko mieć odrębne rekordy oparte na trzech kolumnach. – Zerotoinfinity

+0

@Zerotoinfinite Co z 'col4' co chcesz zrobić dla niego dla każdej odrębnej wartości dla innych wierszy? –

+0

Col4 jest varchar i nie mogę zrobić żadnej agregacji na ten temat. ale to jest unikalna kolumna. Chciałem uzyskać unikatowe z 3 kolumn i po prostu dodać czwartą kolumnę powiązaną z tym wierszem. – Zerotoinfinity

0

grupa różni się od wykonania i prawie podobną funkcjonalność SQL:

więc zarówno wyszukiwania poniżej są prawie równoważne:

SELECT DISTINCT Col1, Col2, Col3 FROM tbl 

SELECT Col1, Col2, Col3 FROM tbl GROUP BY Col1, Col2, Col3 
+1

Ale chcę mieć Col4 również w zestawie wyników – Zerotoinfinity

+0

Dlaczego nie piszesz zapytanie wewnętrzne z różnych 3 kolumn i kwerendy zewnętrznej biorąc wewnętrzny 3 i Col4 pasujących wierszy? – RMN

0
select distinct (Convert(varchar(255),Col1) +' '+ 
Convert(varchar(255),Col2)+' '+Convert(varchar(255),Col3)), 
Col4 from clients 
Powiązane problemy