我有我的查询的场景和结果集。我需要使用特定条件过滤结果集。
查询我:
SELECT
ord_no,parent_item,child_item,status
FROM **TABLE1** WHERE parent_item IN ('ITEM1') AND ord_no IN ('12345','34567','67854')
UNION ALL
SELECT
ord_no,parent_item,child_item,status
FROM **TABLE2** WHERE parent_item IN ('ITEM2') AND ord_no IN ('12345','34567','67854')
UNION ALL
SELECT
ord_no,parent_item,child_item,status
FROM **TABLE3** WHERE parent_item IN ('ITEM3') AND ord_no IN ('12345','34567','67854')
查询返回这样的结果,我正在寻找的预期结果是只返回所有child_items处于COMPLETE状态的特定order_no。
查询结果:
ord_no parent_item child_item status
12345 item1 childA complete
12345 item1 childB complete
12345 item2 childC complete
12345 item2 childD incomplete
12345 item3 childE incomplete
12345 item3 childF complete
34567 item1 childA complete
34567 item1 childB complete
34567 item2 childC complete
34567 item2 childD complete
34567 item3 childE complete
34567 item3 childF complete
67854 item1 childA incomplete
67854 item1 childB incomplete
67854 item2 childC complete
67854 item2 childD complete
67854 item3 childE incomplete
67854 item3 childF incomplete
预期结果:
我无法弄清楚如何实现这一点。对此的任何帮助将不胜感激。
ord_no parent_item child_item status
34567 item1 childA complete
34567 item1 childB complete
34567 item2 childC complete
34567 item2 childD complete
34567 item3 childE complete
34567 item3 childF complete
答案 0 :(得分:0)
您可以从现有查询中create a view来避免长表达式并将其用于子查询。
SELECT *
FROM MyView
WHERE ord_no NOT IN
(SELECT ord_no
FROM MyView
WHERE status <> 'complete');