Sql 估计。在这3个字段上放置一个合适的聚合函数并完成。对于数据在不同行上不同的列,您希望如何处理?例如,最近的活动日期? USE SCRUMAPI2 DECLARE @userParam VARCHAR(100) ,@orgTeamPK VARCHA

Sql 估计。在这3个字段上放置一个合适的聚合函数并完成。对于数据在不同行上不同的列,您希望如何处理?例如,最近的活动日期? USE SCRUMAPI2 DECLARE @userParam VARCHAR(100) ,@orgTeamPK VARCHA,sql,sql-server,Sql,Sql Server,估计。在这3个字段上放置一个合适的聚合函数并完成。对于数据在不同行上不同的列,您希望如何处理?例如,最近的活动日期? USE SCRUMAPI2 DECLARE @userParam VARCHAR(100) ,@orgTeamPK VARCHAR(100) ,@statusParam VARCHAR(100) ,@search VARCHAR(100) ,@monthAgo VARCHAR(100) SET @userParam = 'Amit Abc (a


估计。在这3个字段上放置一个合适的聚合函数并完成。对于数据在不同行上不同的列,您希望如何处理?例如,最近的活动日期?
USE SCRUMAPI2

DECLARE @userParam VARCHAR(100)
    ,@orgTeamPK VARCHAR(100)
    ,@statusParam VARCHAR(100)
    ,@search VARCHAR(100)
    ,@monthAgo VARCHAR(100)

SET @userParam = 'Amit Abc (abca)'
SET @orgTeamPK = '%'
SET @statusParam = '%'
SET @search = '%'
SET @monthAgo = '12/08/2013'

SELECT ROW_NUMBER() OVER (
        ORDER BY TSK.[Status] DESC
        ) AS 'RowNumber'
    ,PDT.[Name] AS Project
    ,(
        CASE 
            WHEN (
                    STY.KanBanProductId IS NOT NULL
                    AND STY.SprintId IS NULL
                    )
                THEN 'KanBan'
            WHEN (
                    STY.KanBanProductId IS NULL
                    AND STY.SprintId IS NOT NULL
                    )
                THEN 'Sprint'
            END
        ) AS ProjectType
    ,STY.[Number] StoryNumber
    ,STY.Title AS StoryTitle
    ,CONVERT(VARCHAR(20), STY.Effort) AS StoryPoints
    ,(
        SELECT SUM(OriginalEstimateHours)
        FROM Task TSK
        LEFT JOIN Story STU ON TSK.StoryId = STU.PK_Story
        LEFT JOIN Sprint SPT ON STU.SprintId = SPT.PK_Sprint
        LEFT JOIN Product PDT ON STU.ProductId = PDT.PK_Product
        LEFT JOIN [User] USR ON TSK.PointPerson = USR.DisplayName
        WHERE TSK.PointPerson LIKE @userParam
            AND (
                (
                    @orgTeamPK = '%'
                    AND (
                        USR.[OrganizationalTeamId] LIKE @orgTeamPK
                        OR USR.[OrganizationalTeamId] IS NULL
                        )
                    )
                OR (
                    @orgTeamPK <> '%'
                    AND (USR.[OrganizationalTeamId] LIKE @orgTeamPK)
                    )
                )
            AND STU.Number LIKE STY.Number
        ) AS StoryHoursEstimate
    ,ISNULL(SUM(DTH.[Hours]), 0) AS WorkHours
    ,'' AS Variance
    ,MAX(CASE 
            WHEN DTH.Hours != 0
                THEN DTH.ActivityDate
            END) AS LatestActivityDate
    ,(
        CASE 
            WHEN (TSK.[Status] = 'Not Started')
                THEN 'Active'
            WHEN (TSK.[Status] = 'In Progress')
                THEN 'Active'
            WHEN (TSK.[Status] = 'Impeded')
                THEN 'Active'
            WHEN (TSK.[Status] = 'Done')
                THEN 'Done'
            END
        ) AS [Status]
FROM Task TSK
LEFT JOIN DailyTaskHours DTH ON TSK.PK_Task = DTH.TaskId
LEFT JOIN Story STY ON TSK.StoryId = STY.PK_Story
LEFT JOIN Sprint SPT ON STY.SprintId = SPT.PK_Sprint
LEFT JOIN Product PDT ON STY.ProductId = PDT.PK_Product
LEFT JOIN [User] USR ON TSK.PointPerson = USR.DisplayName
WHERE TSK.PointPerson LIKE @userParam
    AND TSK.CreateDate >= CASE 
        WHEN TSK.[Status] = 'Done'
            THEN @monthAgo
        ELSE '1900-01-01'
        END
    AND TSK.[Status] LIKE @statusParam
    AND PDT.[Name] != 'Overhead Codes'
    AND (
        (
            @orgTeamPK = '%'
            AND (
                USR.[OrganizationalTeamId] LIKE @orgTeamPK
                OR USR.[OrganizationalTeamId] IS NULL
                )
            )
        OR (
            @orgTeamPK <> '%'
            AND (USR.[OrganizationalTeamId] LIKE @orgTeamPK)
            )
        )
    AND TSK.Deleted IS NULL
    AND (
        (
            STY.Number LIKE @search
            OR STY.Number IS NULL
            )
        OR (
            STY.Title LIKE @search
            OR STY.Title IS NULL
            )
        OR (
            TSK.NAME LIKE @search
            OR TSK.NAME IS NULL
            )
        )
GROUP BY LEN(STY.[Number])
    ,STY.[Number]
    ,TSK.[Status]
    ,STY.Title
    ,PDT.[Name]
    ,TSK.PointPerson
    ,TSK.CreateDate
    ,TSK.[Name]
    ,STY.KanBanProductId
    ,STY.SprintId
    ,TSK.OriginalEstimateHours
    ,STY.Effort
ORDER BY CASE TSK.[Status]
    WHEN 'Active'
        THEN 1
    WHEN 'Done'
        THEN 2
    END
CREATE TABLE dbo.mytable
(
  Project VARCHAR(255), 
  ProjectType VARCHAR(32),  
  StoryNumber CHAR(9),
  WorkHours DECIMAL(10,2),
  LastActivityDate DATETIME,
  [Status] VARCHAR(10)
);

INSERT dbo.mytable VALUES
('Procurement Project','Sprint','PRO06-262',0.00, NULL,'Active'),
('Procurement Project','Sprint','PRO06-649',5.00, '20140107','Active'),
('Other Systems',      'KanBan','MISCX-232',3.00, '20131230','Active'),
('Procurement Project','Sprint','PRO06-249',10.00,'20131219','Active'),
('Procurement Project','Sprint','PRO06-249',15.00,'20140103','Active'),
('Procurement Project','Sprint','PRO06-651',8.00, '20131213','Active');
GO
SELECT Project, ProjectType, StoryNumber, wh = SUM(WorkHours), 
  la = MAX(LastActivityDate), st = MIN([Status])
FROM dbo.MyTable
GROUP BY Project, ProjectType, StoryNumber;
;WITH x AS 
(
  SELECT Project, ProjectType, StoryNumber, 
    wh = SUM(WorkHours) OVER (PARTITION BY StoryNumber),
    rn = ROW_NUMBER() OVER (PARTITION BY StoryNumber ORDER BY LastActivityDate DESC), 
la = LastActivityDate, 
    st = [Status]
  FROM dbo.MyTable
)
SELECT Project, ProjectType, StoryNumber, wh, la, st FROM x WHERE rn = 1;