1

現在アセンブルしようとしている SQL Server 2005 クエリがありますが、いくつか問題があります。

Project、Area、Name、User、Engineer の 5 つの列に基づく group by 句があります。

エンジニアは別のテーブルから来ており、1 対多の関係です

WITH TempCTE
AS (
    SELECT htce.HardwareProjectID AS ProjectId
        ,area.AreaId AS Area
        ,hs.NAME AS 'Status'
        ,COUNT(*) AS Amount
        ,MAX(htce.DateEdited) AS DateModified
        ,UserEditing AS LastModifiedName
        ,Engineer
        ,ROW_NUMBER() OVER (
            PARTITION BY htce.HardwareProjectID
            ,area.AreaId
            ,hs.NAME
            ,htce.UserEditing ORDER BY htce.HardwareProjectID
                ,Engineer DESC
            ) AS row
    FROM HardwareTestCase_Execution AS htce
    INNER JOIN HardwareTestCase AS htc ON htce.HardwareTestCaseID = htc.HardwareTestCaseID
    INNER JOIN HardwareTestGroup AS htg ON htc.HardwareTestGroupID = htg.HardwareTestGroupId
    INNER JOIN Block AS b ON b.BlockId = htg.BlockId
    INNER JOIN Area ON b.AreaId = Area.AreaId
    INNER JOIN HardwareStatus AS hs ON htce.HardwareStatusID = hs.HardwareStatusId
    INNER JOIN j_Project_Testcase AS jptc ON htce.HardwareProjectID = jptc.HardwareProjectId AND htce.HardwareTestCaseID = jptc.TestcaseId
    WHERE (htce.DateEdited > @LastDateModified)
    GROUP BY htce.HardwareProjectID
        ,area.AreaId
        ,hs.NAME
        ,htce.UserEditing
        ,jptc.Engineer
    )

ここに画像の説明を入力

私が欲しいものの要点は、空のエンジニア列を処理できるようにすることです。この列の 2 番目のエントリ (行 = 2) を空白にしたくありません。

私がしたいこと:

  1. 「行」の値が 1 と 2 のアイテムをグループ化します。
  2. 空でないエンジニアを選択します。
  3. 一致する行 = 2 がないエンジニアの選択を解除しないでください。

私は一連の結合を試みて、物事を機能させようとしました。これまでのところ運がありません。

4

1 に答える 1

0

を使用j_Project_Testcase PIVOT( MAX(Engineer) for Row in ( [1], [2] )ISNULL( [1],[2])てから選択し、Engineer値を選択します

SQLフィドルを設定すると、より堅牢な例を提供できます

これを読んでみてください: PIVOT と UNPIVOT

于 2013-10-22T15:27:15.247 に答える