我的问题简而言之如下……
销售订单行(销售订单上的不同项目)
Sales Order Number Item Number Category
1001 aaa Z
1001 bbb X
1001 ccc Y
1002 bbb X
1002 eee W
1003 ttt S
1003 rrr P
1004 bbb X
1005 eee W
我要显示销售订单中包含类别为X的项目的所有销售订单行
所以结果可能看起来像这样;
Sales Order Number Item Number Category
1001 aaa Z
1001 bbb X
1001 ccc Y
1002 bbb X
1002 eee W
1004 bbb X
as 1003和1005不包含类别X的项目
发布于 2014-07-09 21:01:46
一个Exists
子句就可以了。
select *
from <yourTable> t1
where exists (select null
from <yourTable>
where t1.salesordernumber = salesordernumber
and category = 'X')
发布于 2014-07-09 21:02:16
用EXISTS
实现相当简单的方法
SELECT *
FROM orders o
WHERE EXISTS (
SELECT 1
FROM ORDERS o2
WHERE o.[Sales Order Number] = o2.[Sales Order Number]
AND o2.Category = 'X'
)
发布于 2014-07-09 21:03:45
如果您愿意,这里有一个不带Exists的选项:
SELECT * FROM MY_TABLE
WHERE [Sales Order Number] in
(SELECT DISTINCT [Sales Order Number] from MY_TABLE where [Category] = 'X')
我不喜欢相关子查询,因为我发现它们的性能在某些情况下比其他情况下下降得更多,但是YMMV。到目前为止,所有的响应都应该是有效的。
https://stackoverflow.com/questions/24654370
复制相似问题