gpt4 book ai didi

sql - 如何有效地使用 SQL 连接

转载 作者:行者123 更新时间:2023-12-02 08:39:27 24 4
gpt4 key购买 nike

表格

工作

JobId, JobName  

职位详情

JobDetailId, JobId, AcctNum, PerformDate

一个 Job 有许多 JobDetailsJobId 链接。

对于某些JobNames,(JobeName1,JobName2)我想要一个列表,其中包含只有一个JobDetail,其中Performdate在过去 6 个月内。

对于上述标准,我应该获得两条记录。正确的 SQL 语句是什么?

我已经做到了这一点,并没有得到正确的陈述。

SELECT 
COUNT(J.JobId)
FROM
Job J
WHERE
J.JobName IN ('Doc1', 'Doc2')
GROUP BY
J.JobName

[编辑]
SQL 服务器 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 在选择列表中无效...未包含在聚合函数中..

[编辑3]
http://sqlfiddle.com/#!3/3ef21/1/0

我想要 Doc1 和 DOC2 的 PerformDate 的最新 AcctNum。

因此,根据 SQLFIDDLE 中的数据,我应该为每个 JobName 取回 2 行。

[编辑4]
我的预期数据是来自 JobDetail 表的 * 行:
JobDetailId 1
jobDetailId 3

最佳答案

给你:

SELECT COUNT(J.JobId) FROM Job J  
INNER JOIN JobDetails D ON J.JobId = D.JobId
WHERE J.JobName IN ('Jobname1', 'Jobname2')
AND D.PerformDate >= DateAdd(mm, -6, getdate())
GROUP BY J.JobName

我是用 TSQL (SQL Server) 写的。对于其他 DBMS,您必须使用 DateAdd(mm, -6, getdate()) 的相关函数。

更新:为DOC1DOC2选择最新的AcctNum

  
   Select D.JobID, Acctnum from     JobDetail D Inner Join    (     SELECT J.JOBID, MAX(PerformDate) as LatestPerformDate FROM Job J     INNER JOIN JobDetail D ON J.JobId = D.JobId     WHERE J.JobName IN ('DOC1', 'DOC2')      Group by J.JobID    ) X on D.JobID = X.JobID    And D.PerformDate = X.LatestPerformDate
  

Update 2: When DOC2 can appear twice in Job table with different JobID.

Select D.JobID, Acctnum from 
JobDetail D Inner Join Job J on J.JobID = D.JobID
Inner join
(
SELECT J.JOBname, MAX(PerformDate) as LatestPerformDate FROM Job J
INNER JOIN JobDetail D ON J.JobId = D.JobId
WHERE J.JobName IN ('DOC1', 'DOC2')
group by j.jobname
) X on J.JobName = X.JobName
And D.PerformDate = X.LatestPerformDate

问题中 sqlfiddle 中发布的输入数据的输出:

JOBID   ACCTNUM
--------------------
1 1235
4 1238

关于sql - 如何有效地使用 SQL 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17937968/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com