我在ExactTarget中使用以下查询,想知道为什么需要在GROUP BY语句中使用表名,而不需要在WHERE语句中使用。
SELECT _Open.SubscriberKey, MIN(_Open.EventDate) AS EventDate3
FROM _Open
INNER JOIN _Job
ON _Open.JobID = _Job.JobID
WHERE EmailID = 10339639
GROUP BY _Open.SubscriberKey
它工作得很好,只是想知道为什么/什么时候在列名前面需要表名,什么时候不需要。
如果字段对表是唯一的,则不需要表名。SubscriberKey只存在于一个表中,因此您可以说
SubscriberKey or _open.Subscriberkey (optional)
但若字段存在于多个表中,则需要指定要使用的表。示例JobID存在于两个表中,因此您必须指定哪个表(jobs.JobID or _open.JobID)
此约定与where子句或按查询分组无关。