Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

zamień jeden wiersz na kolumny

Sprawdź tabele przestawne;

Zobacz http://msdn.microsoft.com/en-us/library/ ms177410.aspx

Proste zapytanie dla skończonej liczby StatusTypeNames wyglądałoby mniej więcej tak;

SELECT * FROM 
(SELECT MonthName, StatusTypeName as attributeCol, StatusCount FROM @ResultsTable) rt 
PIVOT ( MAX(StatusCount) FOR attributeCol in ([ToBeScheduled],[Complete])) as pvt
ORDER BY MonthName

Zwróć uwagę na użycie MAX. Jeśli istnieje prawdopodobieństwo, że będziesz mieć wiele wierszy z tą samą kombinacją nazwy miesiąca i nazwy typu statusu, możesz użyć opcji SUMA.

Aby skorzystać z dynamicznych kolumn, jak sugeruje madhivinan, możesz śledzić ten przykład. Przewiń w dół.

Próbowałem zmusić go do pracy z twoim przykładem, ale ponieważ miałem kilka problemów, prawdopodobnie z powodu braku tabel. Jednak coś takiego jak poniżej jest tym, czego szukasz.

DECLARE @listCol VARCHAR(2000)
DECLARE @query VARCHAR(4000)
SELECT  @listCol = SELECT STUFF (( SELECT DISTINCT '],[' + 
                    StatusTypeName FROM @ResultsTable ORDER BY '],[' + 
                    StatusTypeName FOR XML PATH ('')), 1, 2, '') + ']'


SET @query =
'SELECT * FROM
      (SELECT MonthNameCol, StatusTypeName as attributeCol, StatusCount FROM @ResultsTable) rt
PIVOT ( MAX(StatusCount) FOR attributeCol in ('[email protected]+')) AS pvt ORDER BY MonthNameCol'

EXECUTE (@query)

To nie do końca prawda, ale jest to punkt wyjścia.

Powodzenia.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak używać kursora do aktualizacji rekordu

  2. Ponieważ nie ma parametru tablicy Sqlserver, jaki jest najlepszy sposób postępowania?

  3. Jak naprawić odwrócone znaki arabskie zmieszane z angielskim w serwerze SQL?

  4. Pojedyncze i podwójne cudzysłowy w zapytaniu wstawiania SQL Server 2005

  5. Najszybszy sposób na usunięcie znaków nienumerycznych z VARCHAR w SQL Server