sql >> Databáze >  >> RDS >> Sqlserver

Jak PIVOTOVAT až na 49 polích?

Váš první dotaz je nejbližší, kromě toho, že jste neuzavřeli každý case do agregační funkce. Také se zdá, že nepotřebujete některé sloupce v group by klauzule:

select
    [Encounter Number], 
    Proc1 = max(CASE When [Encounter Proc Sequence] = '1' Then [Procedure Code (Enctr)] END),
    SvcDate1 = max(Case When [Encounter Proc Sequence] = '1' Then [Date of Service] END),
    Surgeon1 = max(CASE When [Encounter Proc Sequence] = '1' Then [Surgeon] END),
    Proc2 = max(CASE When [Encounter Proc Sequence] = '2' Then [Procedure Code (Enctr)] END),
    SvcDate2 = max(Case When [Encounter Proc Sequence] = '2' Then [Date of Service] END),
    Surgeon2 = max(CASE When [Encounter Proc Sequence] = '2' Then [Surgeon] END),
    Proc3 = max(CASE When [Encounter Proc Sequence] = '3' Then [Procedure Code (Enctr)] END),
    SvcDate3 = max(Case When [Encounter Proc Sequence] = '3' Then [Date of Service] END),
    Surgeon3 = max(CASE When [Encounter Proc Sequence] = '3' Then [Surgeon] END)
    --- etc.
from EncounterProc
where [Date of Service] between '20090101' and '20091231'
    and [Procedure Code (ENCTR)] is not null
group by [Encounter Number], [Encounter Proc Sequence]



  1. Odstraňte záznamy z tabulky, kde <max číslo pro pole a ponechte nejvyšší číslo

  2. Uložená procedura v Oracle s chybou PLS-00428

  3. MySQL počítání odpovídajících slov

  4. Laravel 5.1 spotřebovávající soap wsdl službu pomocí ovladače a modelu