【发布时间】:2020-06-27 22:10:02
【问题描述】:
注意:我在这个数据库中没有写权限。
我有一个事务表,我需要在其中计算事务数:DONE
SELECT
unique_id,
journey_files_id,
version_template_code,
Count (*) as cnt
FROM [XXX].[dbo].[CampaignResponse]
WHERE version_template_code LIKE '%FPQ%'
AND CAST(email_action_date AS DATE) >='02/01/2020' and CAST(email_action_date AS DATE) <='02/29/2020'
GROUP BY unique_id, journey_files_id, version_template_code ORDER BY cnt DESC
现在我需要使用 unique_id、journey_files_id、version_template_code 将此视图加入到第二个表中
当前查询无效:
SELECT DISTINCT *
FROM [XXX].[dbo].[EmailSend] a
LEFT JOIN
(
SELECT
unique_id,
journey_files_id,
version_template_code,
Count (email_action) as cnt
FROM [XXX].[dbo].[CampaignResponse]
WHERE version_template_code LIKE '%FPQ%'
AND CAST(email_action_date AS DATE) >='02/01/2020' and CAST(email_action_date AS DATE) <='02/29/2020'
) b ON a.unique_id = b.unique_id
AND a.journey_files_id = b.journey_files_id
AND a.version_template_code = b.version_template_code
WHERE CAST(a.processed AS DATE) >='02/01/2020' and CAST(a.processed AS DATE) <='02/29/2020'
GROUP BY [id]
,a.[unique_id]
,a.[journey_files_id]
,a.[version_template_code]
,[ecrm_template_code]
,[lead_type]
,[quote_number]
,[email]
,[company_name]
,[sl_code]
,[kw_subject_line]
,[promo_line]
,[headline]
,[image_top]
,[learn_more]
,[tfn]
,[subhead_1]
,[body_copy_1]
,[subhead_2]
,[bullet_1]
,[offer]
,[video_img]
,[video_url]
,[video_copy]
,[legal]
,[kw_url_01]
,[kw_url_02]
,[variable_01]
,[variable_02]
,[tracking_pixel_url]
,[processed]
,b.cnt
,b.unique_id, b.journey_files_id, b.version_template_code
ORDER BY b.unique_id
错误信息:
消息 8120,第 16 级,状态 1,第 8 行
列“AJM.dbo.CampaignResponse.unique_id”在选择列表中无效,因为它不包含在聚合函数或 GROUP BY 子句中。
这是有道理的 - 我似乎无法想出解决办法。
非常感谢您的帮助。
【问题讨论】:
-
你为什么使用
GROUP BY和DISTINCT? -
您使用 * 通配符来选择所有列,但并非所有由此选择的列都在 group by 子句中命名。任何选择但不在 group by 子句中的列都必须应用显式聚合。由于这个原因,* 通配符和 group by 子句通常不会组合在一起。
标签: sql sql-server count left-join aggregation