我正在尝试为每个唯一业务部门选择最新请求#的创建日期。因为有更多独特的创建日期,所以有业务单位,我在业务单位列中获得非唯一业务单位。我不需要所有创建日期,只需要最新创建日期。
如果你看一下v2中的CTE,我想要从CTE返回的每个值得到最新的CreateDate
。
感谢任何帮助。
版本1:
SELECT
SQ.[Business Unit Impacted] [BU],
COUNT(RD.RequestID) [ReqCount],
(SELECT TOP 1 RD.CreateDate) [Create]
FROM
REP_RequestData RD
LEFT JOIN
REP_StandardQuestionResponses SQ ON SQ.RequestDataId = RD.Id
WHERE
RD.ProductID = 'Firewall.Change.Request'
GROUP BY
SQ.[Business Unit Impacted], RD.CreateDate
第2版:
WITH D AS
(
SELECT
SQ.[Business Unit Impacted] [BU],
COUNT(RD.RequestID) [ReqCount]
FROM
REP_RequestData RD
LEFT JOIN
REP_StandardQuestionResponses SQ ON SQ.RequestDataId = RD.Id
WHERE
RD.ProductID = 'Firewall.Change.Request'
GROUP BY
SQ.[Business Unit Impacted]
)
SELECT
D.BU,
D.ReqCount,
(SELECT TOP 1 RD.CreateDate) [create]
FROM
D
LEFT JOIN
REP_StandardQuestionResponses SQ ON SQ.[Business Unit Impacted] = D.BU
LEFT JOIN
REP_REQUESTDATA RD on SQ.RequestDataId = RD.Id
WHERE
RD.ProductID = 'Firewall.Change.Request'
GROUP BY
D.BU, D.ReqCount, RD.CreateDate
答案 0 :(得分:0)
在版本2中,您需要在subselect语句中添加where子句(选择top 1 RD.CreateDate)以限制返回到同一行返回的业务单位以及获取最新CreateDate的顺序。它看起来像下面的代码:
(select top 1 RD.CreateDate where RD.BU = D.BU order by RD.CreateDate desc)
这应该返回基于业务单元的最新CreateDate。
答案 1 :(得分:0)
如果我理解正确你只需要最新的日期,那么只需要通过BU进行分组并获得最大值(日期):
SELECT
SQ.[Business Unit Impacted] [BU],
COUNT(RD.RequestID) [ReqCount],
MAX(RD.CreateDate) [Create]
FROM
REP_RequestData RD
LEFT JOIN
REP_StandardQuestionResponses SQ ON SQ.RequestDataId = RD.Id
WHERE
RD.ProductID = 'Firewall.Change.Request'
GROUP BY
SQ.[Business Unit Impacted]