sql >> Database teknologi >  >> RDS >> Sqlserver

Konvertering af resultaterne af en kolonne til en enkelt række

Du forsøger at PIVOT dataene. SQL-serveren har en PIVOT funktion, der kan udføre dette for dig. For at udføre PIVOT du skal beslutte, hvilken aggregeret funktion du skal bruge. I mit eksempel brugte jeg MAX() men du kan bruge SUM() osv.

Hvis du ikke har en pivotfunktion, kan du bruge en aggregeret funktion med en CASE erklæring for at gøre dette.

Aggregeret/CASE-version: Denne version kræver, at du hårdkoder alle navnene i kolonnerne.

vælg max(case when name ='Engineering' then rating end) Engineering, max(case when name ='Financials' then rating end) Financials, max(case when name ='Scope' then rating end) Scope, max(case when name ='Schedule' then rating end) Schedule, max(case when name ='Risks' then rating end) Risici, max(case when name ='People' then rating end) People from your table 

Se SQL Fiddle with Demo

Statisk PIVOT-version: Du vil hårdkode værdierne af navnene i denne forespørgsel

vælg *from( vælg navn, vurdering fra dit bord) srcpivot( max(rating) for navn i ([Engineering], [Financials], [Scope], [Schedule], [Risici], [People] )) piv 

Se SQL Fiddle with Demo

Ovenstående versioner fungerer godt, hvis du har et kendt antal kolonner, men hvis dit navn værdier er ukendte, så kan du bruge dynamisk sql til at PIVOT dataene.

Dynamisk PIVOT-version:

ERKLÆR @cols SOM NVARCHAR(MAX), @query AS NVARCHAR(MAX)vælg @cols =TING((SELECT distinct ',' + QUOTENAME(Name) from yourtable FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)') ,1,1,'')set @query ='SELECT ' + @cols + ' fra (vælg navn, vurdering fra din tabel) x pivot (max(rating) ) for navn i (' + @cols + ') ) p 'execute(@query) 

Se SQL Fiddle with Demo

Alle tre versioner vil give det samme resultat:

| INGENIØR | ØKONOMI | OMFANG | TIDSPLAN | RISICI | MENNESKER |------------------------------------------------ ----------------| 1 | 3 | 1 | 2 | 3 | 3 |


  1. Hvordan kan jeg ændre NLS_DATE_FORMAT i PHP

  2. brug IFNULL i laravel

  3. Forstå PostgreSQL-datotyper og -funktioner (ved eksempler)

  4. Brug af DISTINCT baseret på en enkelt kolonne i GROUP BY