SQL选择重复结果问题

时间:2016-04-15 08:00:38

标签: sql sql-server

我是SQL的新手,这是我第一次尝试编写查询。

我已设法通过以下方式提取我需要的数据,但由于每个项目有多个useddates,我的结果会为每个项目显示多个实例。如果我做得对,我已经尝试使用MAX不确定了。

预期结果:每个项目只能看到一个条目,最新lastuseddate

use bosext
SELECT  artno, shorttext, longtext, price,MAX(lastuseddate) as LastUsed
FROM accountitem, accountitemdyn
WHERE NOT EXISTS 
    (SELECT * 
     FROM shelfitem  
     WHERE accountitem.ID = shelfitem.itemID)
Group by accountitem.artno,shorttext, longtext, price, lastuseddate

enter image description here

4 个答案:

答案 0 :(得分:0)

在没有lastuseddate

的情况下使用分组
Group by accountitem.artno,shorttext, longtext, price

答案 1 :(得分:0)

使用FULL OUTER JOIN而不是WHERE EXISTS,使用正确的联接加入您的两个帐户表,并且lastuseddate中不包含GROUP BY,因为它已经在汇总中功能

USE bosext
SELECT ai.artno, shorttext, longtext, price, MAX(lastuseddate) AS LastUsed
FROM accountitem ai
INNER JOIN accountitemdyn aid ON = ai.? = aid.?
FULL OUTER JOIN shelfitem s ON ai..ID = s.itemID
Group by ai.artno, shorttext, longtext, price

答案 2 :(得分:0)

您不应在group by子句中包含lastuseddate

use bosext
SELECT  artno, shorttext, longtext, price,MAX(lastuseddate) as LastUsed
FROM accountitem, accountitemdyn
WHERE NOT EXISTS 
    (SELECT * 
     FROM shelfitem  
     WHERE accountitem.ID = shelfitem.itemID)
Group by accountitem.artno,shorttext, longtext, price

答案 3 :(得分:0)

lastuseddate子句

中删除Group By

尝试以下方法

SELECT  artno, shorttext, longtext, price,MAX(lastuseddate) as LastUsed
FROM accountitem, accountitemdyn
WHERE NOT EXISTS 
    (SELECT * 
     FROM shelfitem  
     WHERE accountitem.ID = shelfitem.itemID)
Group by accountitem.artno,shorttext, longtext, price