1

我现在正在尝试组装一个 SQL Server 2005 查询,但我遇到了一些困难。

我有一个基于 5 列的 group by 子句:项目、区域、名称、用户、工程师。

工程师来自另一张桌子,是一对多的关系

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
    )

在此处输入图像描述

我想要的要点是能够处理空的工程师列。我不希望此列有一个空白的第二个条目(其中 row=2)。

我想做的事:

  1. 将“行”值为 1 和 2 的项目组合在一起。
  2. 选择不为空的工程师。
  3. 不要取消选择没有匹配行=2 的工程师。

我尝试了一系列连接来尝试使事情正常进行。到目前为止没有运气。

4

1 回答 1

0

使用j_Project_Testcase PIVOT( MAX(Engineer) for Row in ( [1], [2] )then selectISNULL( [1],[2])选择Engineer

如果您设置 SQL 小提琴,我可以给您一个更强大的示例

尝试阅读:PIVOT 和 UNPIVOT

于 2013-10-22T15:27:15.247 回答