1

学生の財政援助賞のテーブルを生成する次のクエリがあります。複数の学期を同時に支援したいので、ピボットを行いたいと考えています。

select pt.award as Award, pt.[1] as Fall, pt.[2] as Spring, pt.[3] as Summer            
--into #awardTemp
  from (select fa.Description as award, fa.OriginalAmount, fa.TextTerm,
          ROW_NUMBER() OVER(PARTITION BY fa.description 
            order by fa.textterm) AS M
      from CAMS_Enterprise.dbo.cams_FinancialAward_view as fa
        where fa.Code1ID = 0
      and fa.StudentAccepted is null
      and fa.studentuid = @studentuid) as AT
  pivot (max(at.originalamount) for at.m in ([1],[2],[3])) as pt

同じ行に学期ごとの金額をリストする代わりに、以下のような結果が得られます。説明のタイトルは同じですが、賞の学期ごとに独自の行が表示されます。誰が問題がどこから来ているのか知っていますか?

Academic Scholarship                5000.00 NULL    NULL
Academic Scholarship                NULL    5000.00 NULL
Federal Subsidized Stafford Loan    1750.00 NULL    NULL
Federal Subsidized Stafford Loan    NULL    1750.00 NULL
Federal Unsubsidized Stafford Loan  1000.00 NULL    NULL
Federal Unsubsidized Stafford Loan  NULL    1000.00 NULL
4

1 に答える 1

3

の前にテーブルからのデータが表示されない場合、クエリpivotに が含まれていることが原因であると推測しfa.TextTermます。

TextTermこれは、複数の行を引き起こしている個別の値を与えています。

SELECT最終リストでその列を使用していないため、これが問題の明らかな理由のようです。クエリを次のように変更することをお勧めします。

select pt.award as Award, pt.[1] as Fall, pt.[2] as Spring, pt.[3] as Summer            
--into #awardTemp
from 
(
    select fa.Description as award, 
        fa.OriginalAmount, 
        ROW_NUMBER() OVER(PARTITION BY fa.description order by fa.textterm) AS M
    from CAMS_Enterprise.dbo.cams_FinancialAward_view as fa
    where fa.Code1ID = 0
      and fa.StudentAccepted is null
      and fa.studentuid = @studentuid
) as AT
pivot 
(
    max(at.originalamount) 
    for at.m in ([1],[2],[3])
) as pt
于 2013-03-12T19:02:39.193 に答える