gpt4 book ai didi

sql - MS Access SQL 重复行?

转载 作者:行者123 更新时间:2023-12-04 07:06:45 25 4
gpt4 key购买 nike

询问:

SELECT DISTINCT ([Equipment List].ID) AS Expr1, [Job Assignments].Job
FROM [Equipment List] LEFT JOIN [Job Assignments]
ON [Equipment List].ID = [Job Assignments].EquipmentID;

在此查询中,当且仅当我不在 select 语句中添加 [Job Assignments].Job 时,设备 ID 是不同的。一旦我这样做,我就会得到很多重复。 Job Assignments 表有很多工作,但我只对 [Date Returned] 为空或为空的那一项感兴趣。任何想法如何实现这一点?我将此用作报告,因此当我尝试使用内部 sql 查询时,它给了我一个错误。这也是一个简化的查询,因为原始查询有多个选择。我究竟做错了什么?任何帮助将不胜感激。

更新:我希望从 [Job Assignments] 表中只选择一行。有任何想法吗?

最佳答案

DISTINCT 返回 SELECT 语句中所有列的不同组合,这就是为什么引入第二列也会引入重复。

听起来您可以使用 WHERE 子句:

SELECT DISTINCT ([Equipment List].ID) AS Expr1, [Job Assignments].Job 
FROM [Equipment List]
LEFT JOIN [Job Assignments] ON [Equipment List].ID = [Job Assignments].EquipmentID
WHERE [Job Assignments].[Date Returned] IS NULL

你不能有一个“空白”日期,所以如果你看到空白,那么很可能你没有使用日期时间类型来存储你的日期 - 在这种情况下,你需要说:
WHERE COALESCE([Job Assignments].[Date Returned], '') = ''

编辑:基于以下评论的最新解决方案:
;WITH LatestJobs
AS
(SELECT ja.EquipmentID, ja.Job,
ROW_NUMBER() OVER ( PARTITION BY EquipmentID
ORDER BY [Date Returned] DESC) AS RowNumber
FROM [Job Assignments] AS ja)

SELECT el.ID AS EquipmentID,
lj.Job
FROM [Equipment List] AS el
LEFT JOIN LatestJobs AS lj ON el.ID = lj.EquipmentID
AND lj.RowNumber = 1

关于sql - MS Access SQL 重复行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1034091/

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