2016-06-20 8 views
1
select DISTINCT a.Schooldistricttown, a.Schooldistrictnum 
from [Legacy].[dbo].[MyTables] as a 

Es gibt:Erhalten Sie nur 1 Vorkommen für die doppelte Datensätze

enter image description here

Können Sie mir sagen, wie nur ein Vorkommen von a.Schooldistricttown zu bekommen?
Ich habe versucht mit DISTINCT und GROUP BY. Aber es funktioniert nicht.

Hinweis: Ich muss beide Spalten auch anzeigen.

+0

Sie benötigen alle Werte oder nur min oder max von ihnen? Oder alle Komma getrennt? – gofr1

+0

@Sampath und es ist dir egal, ob es 13 oder 30 eingefügt wird? –

+0

@IvanStarostin Ja, kein Problem dort. – Sampath

Antwort

1

zwei Optionen, wenn es keine Rolle spielt, die Sie in Schooldistrictnum bekommen Wert dann Gruppe mit MAX()/MIN() wird dieses Problem lösen:

SELECT a.Schooldistricttown,MAX(a.Schooldistrictnum) 
from [Legacy].[dbo].[MyTables] a 
GROUP BY a.Schooldistricttown 

Wenn Sie kümmern tun, ROW_NUMBER() verwenden:

SELECT s.Schooldistricttown,s.Schooldistrictnum 
FROM (
    SELECT a.Schooldistricttown,a.Schooldistrictnum, 
      ROW_NUMBER() OVER(PARTITION BY a.Schooldistricttown ORDER BY a.<ORDER_COLUMN>) as rnk 
    from [Legacy].[dbo].[MyTables] a) s 
WHERE s.rnk = 1 

Sie müssen <ORDER_COLUMN> mit der tatsächlichen Spalte ersetzen, die Sie entscheiden, welchen Wert Sie davon wollen

+0

'GROUP BY' ist mehr als genug für mich.Thanks :) – Sampath

0

Wenn Sie allewollen Verwenden Sie diese

SELECT DISTINCT 
    a.Schooldistricttown, 
    (
     SELECT DISTINCT 
      ina.Schooldistrictnum + ', ' AS [text()] 
     FROM 
      [Legacy].[dbo].[MyTables] as ina 
     WHERE 
      ina.Schooldistricttown = a.Schooldistricttown 
     FOR XML PATH ('') 
    ) AS Schooldistrictnum 
    FROM [Legacy].[dbo].[MyTables] as a 
Verwandte Themen