sql >> データベース >  >> RDS >> Sqlserver

最大 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. GROUP BYを使用できるのに、なぜDISTINCTを使用しないのですか?

    2. MSAccessでストアドプロシージャを実行するときにこの一般的なエラーを回避する

    3. SQL Server(T-SQL)でデータベースの照合を設定する方法

    4. GROUPBYを使用してアルファベット順を優先して結果セットを取得する方法