添加列而不添加 GROUP BY,而不是嵌套查询
Posted
技术标签:
【中文标题】添加列而不添加 GROUP BY,而不是嵌套查询【英文标题】:ADDING COLUMNS WITHOUT ADDING IN GROUP BY, NESTED QUERY INSTEAD 【发布时间】:2021-08-20 02:06:24 【问题描述】:您好,我之前在此查询 SQL JOIN WITH NESTED QUERY 上获得了帮助,感谢 @GordonLinoff,它运行良好。我的问题是我需要添加更多列,我认为这可以通过嵌套查询来完成,但我没有得到与原始查询相同的 10 个值。我认为这将是一个嵌套查询的原因是因为将任何列添加到下面的查询中需要我将它添加到 group by 子句中,这会解释我的结果。对此嵌套查询的任何帮助都会非常有帮助。这是运行良好并为我提供所需结果的查询
SELECT rmd.issue_id,
MAX(CASE WHEN as_of_date = '2021-08-08' THEN CURRENT.member_impact END) AS prev_member_impact,
MAX(CASE WHEN as_of_date = '2021-08-15' THEN CURRENT.member_impact END) AS curr_member_impact
FROM lod.ism_issue_summary_hist_wky CURRENT INNER JOIN
lod.rmd_iss_remed_summary rmd
ON CURRENT.issue_id = rmd.issue_id
WHERE as_of_date IN ('2021-08-08', '2021-08-15')
GROUP BY rmd.issue_id
HAVING MAX(CASE WHEN as_of_date = '2021-08-08' THEN CURRENT.member_impact END) <> MAX(CASE WHEN as_of_date = '2021-08-15' THEN CURRENT.member_impact END )
我尝试了类似的方法,但无法正常工作:
SELECT
ISSUE_ID,
ISSUE_TITLE,
ISM_STATUS,
ISSUE_OWNER_ORG,
ISSUE_OWNER,
ISSUE_APPROVER
FROM Lod.Ism_Issue_Summary_Hist_Wky
WHERE Issue_Id IN
( WORKING QUERY ABOVE)
我需要将这些数据列添加到结果中的工作查询
ISSUE_ID,
ISSUE_TITLE,
ISM_STATUS,
ISSUE_OWNER_ORG,
ISSUE_OWNER,
ISSUE_APPROVER
ISSUE ID | PREV_MEMBER_IMPACT | CURR_MEMBER_IMPACT |
---|---|---|
ISSUE-00020021 | Y | N |
任何帮助将不胜感激。
【问题讨论】:
忘了提到除了 issue_id 之外的列来自 Lod.Ism_Issue_Summary_Hist_Wky 表。我想要的 Issue_id 是从原始查询派生的。 假设你想要MAX(other_col1)
,对于每个as_of_date
,使用与之前解决方案相同的方法。
我需要的列数据来自最新的 as_of_date 2021-08-15。
你好@JonArmstrong 你是说为需要的每一列添加一个 Max() 吗?
您的working query
拥有GROUP BY rmd.issue_id
。您要添加的列位于rmd
表中。在不了解您的表格的更多信息的情况下,我无法假设这些列在 GROUP BY
术语上是 functionally dependent
,这只是 SELECT
它们所必需的。如果没有这些细节,我们仍然可以使用聚合(如MIN
或MAX
等)将这些列添加到SELECT
列表中,就像SELECT
列表中的其他列一样。您能否提供问题中缺少的表格详细信息?
【参考方案1】:
如果我理解正确,你想添加表达式:
MAX(CASE WHEN as_of_date = '2021-08-15' THEN CURRENT.ISSUE_TITLE END) AS curr_issue_title
其他列以此类推。
【讨论】:
以上是关于添加列而不添加 GROUP BY,而不是嵌套查询的主要内容,如果未能解决你的问题,请参考以下文章
如何在 SELECT 部分中包含 BIT 类型列而不在 T-SQL 中的 GROUP BY 中包含它?
添加 NOT NULL 列而不使用 DEFAULT 但 WITH VALUES