SQL语句返回有限记录

时间:2019-11-20 21:18:49

标签: sql

在SQL语句中,如何返回状态为222555且为666的{​​{1}},PROFESSIONALC顺序是OFFER以及NLIFE的{​​{1}}

STATUS

3 个答案:

答案 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 byhaving

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)