添加列而不添加 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 它们所必需的。如果没有这些细节,我们仍然可以使用聚合(如MINMAX 等)将这些列添加到SELECT 列表中,就像SELECT 列表中的其他列一样。您能否提供问题中缺少的表格详细信息? 【参考方案1】:

如果我理解正确,你想添加表达式:

MAX(CASE WHEN as_of_date = '2021-08-15' THEN CURRENT.ISSUE_TITLE END) AS curr_issue_title

其他列以此类推。

【讨论】:

以上是关于添加列而不添加 GROUP BY,而不是嵌套查询的主要内容,如果未能解决你的问题,请参考以下文章

向H2数据库中的所有表添加列而不手动列出表

如何在 SELECT 部分中包含 BIT 类型列而不在 T-SQL 中的 GROUP BY 中包含它?

PowerPivot Group By 以查找值的计数

添加 NOT NULL 列而不使用 DEFAULT 但 WITH VALUES

将 ORDER BY 语句添加到查询而不展平结果会导致“无法查询重复字段的叉积”

无论如何,他们是不是要向使用 group by 返回特定列的最新行的查询添加连接