Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да PIVOT върху до 49 полета?

Първата ви заявка е най-близката, с изключение на това, че не сте затворили всеки case в агрегатна функция. Също така изглежда, че не се нуждаете от някои колони в group by клауза:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Свързване към SQLServer 2005 с adodbapi

  2. Необходимост от промяна на типовете колони в производствената база данни (SQL Server 2005)

  3. ColdFusion 10/Windowns 7 Pro 64bit Неуспешна проверка на връзката за източник на данни

  4. Сортирайте записите по въведено време

  5. Консолидиране на екземпляр на SQL Server чрез клъстериране и подреждане