【问题标题】:TSQL / SQL - Error: Column is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clauseTSQL / SQL - 错误:选择列表中的列无效,因为它不包含在聚合函数或 GROUP BY 子句中
【发布时间】:2020-05-06 11:44:00
【问题描述】:

我希望有人可以在这里为我指明正确的方向。

DB #1 名称:“Wayin_Integration_SFMC_AD”

我正在尝试与此主表(DB #2)合并:“Master_Users_SVOC_test_vt”

假设“Wayin_Integration_SFMC_AD”中的每个人都已经在“Master_Users_SVOC_test_vt”中有一个主键和记录,现在我想合并到该记录的剩余数据中。

问题是,我的大部分字段都没有包含在 GROUP BY 子句中。

我需要在这里使用子查询吗?我对 SQL 很陌生。这是我不确定的sn-p。如果没有 GROUP BY,这将起作用,但让我感到困惑的是分组。

错误消息:“列 'Wayin_Integration_SFMC_AD.First_Name' 在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中。 "

  • 这是第一个不包含在 GROUP BY 子句中的字段。

这是不起作用的 SQL:

MERGE INTO [bo_marketing_capability_dev].[dbo].[Master_Users_SVOC_test_vt] AS m 
USING (
SELECT
m.subscriber_key,
m.email_address,
w.[First_Name] AS first_name,
w.[Last_Name] AS last_name,
, MAX (w.DateAdded) AS wayin_DateAdded    
FROM Wayin_Integration_SFMC_AD w 
INNER JOIN Master_Users_SVOC_test_vt m
ON w.Email = m.email_address
GROUP BY subscriber_key, w.[Email], m.email_address
) AS SRC
ON ([SRC].[email_address] = [m].[email_address])

【问题讨论】:

  • 您应该能够提供一个具有相同问题的更简单的查询。
  • 如果你想使用聚合函数,你需要按除具有这些函数的列之外的所有列进行分组
  • 错误信息的哪一部分你不清楚???

标签: sql tsql group-by merge


【解决方案1】:
MERGE INTO [bo_marketing_capability_dev].[dbo].[Master_Users_SVOC_test_vt] AS m 
USING (
SELECT
m.subscriber_key,
m.email_address,
w.[First_Name] AS first_name,
w.[Last_Name] AS last_name,
, MAX (w.DateAdded) AS wayin_DateAdded    
FROM Wayin_Integration_SFMC_AD w 
INNER JOIN Master_Users_SVOC_test_vt m
ON w.Email = m.email_address
GROUP BY m.subscriber_key, m.email_address, w.[First_Name], w.[Last_Name]
) AS SRC
ON ([SRC].[email_address] = [m].[email_address])

试试上面的代码。 GROUP BY 应该包含所有非聚合列。

【讨论】:

  • 谢谢杰。现在看起来很明显,当时我对 GROUP BY 实际做了什么有错误的概念!
猜你喜欢
  • 2014-11-02
  • 1970-01-01
  • 2011-07-04
  • 2013-08-17
相关资源
最近更新 更多