表
工作
JobId, JobName
工作详情
JobDetailId, JobId, AcctNum, PerformDate
一个Job
有很多JobDetails
链接JobId
。
对于某些JobNames
,(JobeName1,JobeName2)我想要一个列表,其中只有一个JobDetail
Performdate
在过去 6 个月内。
对于上述标准,我应该得到两条记录。什么是正确的 SQL 语句?
我已经做到了这一点,而不仅仅是得到正确的陈述。
SELECT
COUNT(J.JobId)
FROM
Job J
WHERE
J.JobName IN ('Doc1', 'Doc2')
GROUP BY
J.JobName
[编辑]
SQL Server 2005
[编辑2]
SELECT
J.JobName, JD.AcctNum
FROM
Job J
JOIN JobDetail JD ON J.JobId = JD.JobId
WHERE
J.JobName IN ('DOC1', 'DOC2')
GROUP BY
J.JobName
该声明正在产生:
J.JobId 在选择列表中无效...未包含在聚合函数中...
[EDIT3]
http://sqlfiddle.com/#!3/3ef21/1/0
我想要 Doc1 和 DOC2 的 PerformDate 的最新 AcctNum。
因此,从 SQLFIDDLE 中的数据,我应该为每个 JobName 取回 2 ROWS。
[EDIT4]
我的预期数据是 JobDetail 表中的 * 行:
JobDetailId 1
jobDetailId 3