Próbuję znaleźć kilka prostych przykładów SQL Server PIVOT. Większość przykładów, które znalazłem, dotyczy liczenia lub sumowania liczb. Chcę tylko obrócić niektóre dane ciągów. Na przykład mam zapytanie zwracające następujący kod.
Action1 VIEW
Action1 EDIT
Action2 VIEW
Action3 VIEW
Action3 EDIT
Chciałbym użyć PIVOT (jeśli to możliwe), aby uzyskać takie wyniki:
Action1 VIEW EDIT
Action2 VIEW NULL
Action3 VIEW EDIT
Czy jest to w ogóle możliwe dzięki funkcji PIVOT?
sql-server
tsql
pivot
Tim Cochran
źródło
źródło
Odpowiedzi:
Pamiętaj, że funkcja agregująca MAX będzie działać zarówno na tekście, jak i na liczbach. To zapytanie będzie wymagało tylko jednorazowego przeskanowania tabeli.
źródło
...ELSE NULL END...
zamiast...ELSE '' END...
?Konfiguracja stołu:
Twój stół:
SELECT action, view_edit FROM dbo.tbl
Zapytanie bez użycia PIVOT:
Zapytanie za pomocą PIVOT:
Wynik obu zapytań:
źródło
Jeśli chcesz użyć funkcji PIVOT programu SQL Server, powinno to zadziałać, zakładając, że dwie oryginalne kolumny nazywają się act i cmd. (Nie jest to jednak takie ładne.)
źródło
Z http://blog.sqlauthority.com/2008/06/07/sql-server-pivot-and-unpivot-table-examples/ :
źródło
Cóż, w przypadku twojej próbki i każdej z ograniczoną liczbą unikalnych kolumn powinno to wystarczyć.
źródło
źródło
Miałem sytuację, w której analizowałem ciągi znaków, a pierwsze dwie pozycje tego ciągu byłyby nazwami pól standardu kodowania oświadczeń zdrowotnych. Więc usunąłbym ciągi znaków i uzyskał wartości dla F4, UR i UQ lub czegoś takiego. To było świetne w przypadku jednego rekordu lub kilku rekordów dla jednego użytkownika. Ale kiedy chciałem zobaczyć setki rekordów i wartości dla wszystkich użytkowników, musiał to być PIVOT. Było to wspaniałe zwłaszcza w przypadku eksportowania wielu płyt do doskonałości. Konkretne żądanie raportowania, które otrzymałem, brzmiało: „za każdym razem, gdy ktoś składał wniosek dotyczący Benadrylu, jaką wartość podał w polach F4, UR i UQ. Miałem APLIKACJĘ ZEWNĘTRZNĄ, która utworzyła ColTitle i pola wartości poniżej
źródło