首先,我是一个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或记事本中。
我尝试过以下方法: 选择 * 从表 在哪里订购<> “” 并交付='' 这将返回尚未订购的记录,但我需要查看任何国家/地区尚未订购的记录。
谢谢!
答案 0 :(得分:1)
您想使用EXISTS
和NOT 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