在SQL语句中,如何返回状态为222
为555
且为666
的{{1}},PROFESSIONAL
,C
顺序是OFFER
以及N
和LIFE
的{{1}}
STATUS
答案 0 :(得分:2)
如果我正确理解了您的问题。它应该像这样简单:
select
ORDER_NO
from
YOUR_TABLE_NAME
where
(PRODUCT_CODE = 'PROFESSIONAL' and STATUS = 'C' and OFFER = 'N') or
(PRODUCT_CODE = 'LIFE' and STATUS = 'A')
答案 1 :(得分:0)
使用group by
和having
:
select order_no
from t
group by order_no
having sum(case when PRODUCT_CODE = 'PROFESSIONAL' and STATUS = 'C' then 1 else 0 end) > 0 and
sum(case when PRODUCT_CODE = 'LIFE' and STATUS = 'A' then 1 else 0 end) > 0;
编辑:
您也可以这样表达:
select order_no
from t
where (PRODUCT_CODE = 'PROFESSIONAL' and STATUS = 'C') or
(PRODUCT_CODE = 'LIFE' and STATUS = 'A')
group by order_no
having count(*) = 2;
(此版本假定没有重复的行。)
答案 2 :(得分:0)
您需要与一些候补人员分组
Select ORDER_NO
from table where orderno in
(222, 555,666) group by ORDER_NO
having
1=Max(case
when productcode
='PROFESSIONAL' AND
OFFER ='N' AND
status ='C'
THEN 1
WHEN productcode
='LIFE' and
STATUS='A'
THEN 1
ELSE
0
END)