具有相同引用但状态不同的多个记录需要SQL查询才能返回特定结果

时间:2014-03-11 12:57:10

标签: sql sql-server

首先,我是一个SQL新手并且正在学习这项工作。 我有一个类似于下表的数据集,并且想要创建一个SQL查询以仅返回已订购但未交付的项目。

Ref |   Country |   Ordered     |   Delivered
UPC1    |   AR  |   01/01/2010  |   02/01/2010
UPC1    |   BR  |   01/01/2010  |   02/01/2010
UPC1    |   FR  |   01/01/2010  |   
UPC1    |   UK  |   01/01/2010  |   02/01/2010
UPC1    |   US  |   01/01/2010  |   02/01/2010
UPC2    |   AR  |           |   
UPC2    |   BR  |           |   
UPC3    |   AR  |   01/03/2010  |   
UPC3    |   BR  |   01/03/2010  |   
UPC3    |   DE  |   01/03/2010  |   
UPC3    |   FR  |   01/03/2010  |   
UPC4    |   AR  |   01/01/2010  |   02/01/2010
UPC4    |   BR  |   01/01/2010  |   02/01/2010
UPC4    |   DE  |   01/01/2010  |   
UPC4    |   FR  |   01/01/2010  |   02/01/2010
UPC5    |   AR  |   01/03/2010  |   02/03/2010
UPC5    |   BR  |   01/03/2010  |   02/03/2010
UPC5    |   DE  |   01/03/2010  |   02/03/2010
UPC5    |   FR  |   01/03/2010  |   02/03/2010
UPC6    |   AR  |   01/03/2010  |   
UPC6    |   BR  |   01/03/2010  |   
UPC6    |   DE  |   01/03/2010  |   
UPC6    |   FR  |   01/03/2010  |   

很抱歉新手也发布了,所以我不知道如何让列正确显示。数据应粘贴到Excel或记事本中。

我尝试过以下方法: 选择 * 从表 在哪里订购<> “” 并交付='' 这将返回尚未订购的记录,但我需要查看任何国家/地区尚未订购的记录。

谢谢!

2 个答案:

答案 0 :(得分:1)

您想使用EXISTSNOT EXISTS

SELECT *
FROM MyTable T
WHERE EXISTS (SELECT 1 FROM MyTable
              WHERE Ordered <> ''
              AND Ref = T.Ref)
AND NOT EXISTS (SELECT 1 FROM MyTable
               WHERE Delivered <> ''
               AND Ref = T.Ref)

这将为您提供所有在REF中已经订购但未在任何地方交付的产品的记录。

答案 1 :(得分:0)

不确定,但您可以尝试

SELECT DISTINCT * from <table> 
WHERE Ordered IS NOT NULL AND Delivered IS  NULL