语句显示如下:
SELECT 
CASE WHEN WCLJF > 100000
             THEN (WCLJF - 100000) * 0.05+2000
             ELSE CASE WHEN WCLJF BETWEEN 50000 AND 100000
                THEN ( WCLJF - 50000 ) * 0.04 +1200
                ELSE CASE WHEN WCLJF BETWEEN 30000 AND 50000
                  THEN ( WCLJF - 30000 ) * 0.03 + 600
                  ELSE CASE WHEN WCLJF BETWEEN 5000 AND 30000
                     THEN (WCLJF * 0.02)
                  END
             END
           END
        END 
FROM BFCRM.HYK_JFZH
运行下来后还有一些不符合上面的条件比如5000以下的,这样一来查询的结果5000以下的显示为NULL,我想让结果只显示有值的,NULL值的我不想它在结果中显示出来,还有升序语句加在哪?

解决方案 »

  1.   

    SELECT  CASE WHEN WCLJF > 100000 THEN ( WCLJF - 100000 ) * 0.05 + 2000
                 ELSE CASE WHEN WCLJF BETWEEN 50000 AND 100000
                           THEN ( WCLJF - 50000 ) * 0.04 + 1200
                           ELSE CASE WHEN WCLJF BETWEEN 30000 AND 50000
                                     THEN ( WCLJF - 30000 ) * 0.03 + 600
                                     ELSE CASE WHEN WCLJF BETWEEN 5000 AND 30000
                                               THEN ( WCLJF * 0.02 ) ELSE 0
                                          END
                                END
                      END
            END
    FROM    BFCRM.HYK_JFZH
    WHERE WCLJF >= 5000
    ORDER BY WCLJF asc这样?
      

  2.   

    case when 被lz用成if else了SELECT  
      CASE WHEN WCLJF > 100000 THEN (WCLJF - 100000) * 0.05+2000
                           
      CASE WHEN WCLJF BETWEEN 50000 AND 100000 THEN ( WCLJF - 50000 ) * 0.04 +1200
      CASE WHEN WCLJF BETWEEN 30000 AND 50000  THEN ( WCLJF - 30000 ) * 0.03 + 600
      CASE WHEN WCLJF BETWEEN 5000 AND 30000 THEN (WCLJF * 0.02)
      ELSE 0 END AS WXLJF
        
    FROM BFCRM.HYK_JFZH
      

  3.   


    直接用where过滤掉5000的值不就OK了。
      

  4.   

    SELECT   
      CASE WHEN WCLJF > 100000 THEN (WCLJF - 100000) * 0.05+2000
        
      CASE WHEN WCLJF BETWEEN 50000 AND 100000 THEN ( WCLJF - 50000 ) * 0.04 +1200
      CASE WHEN WCLJF BETWEEN 30000 AND 50000 THEN ( WCLJF - 30000 ) * 0.03 + 600
      CASE WHEN WCLJF BETWEEN 5000 AND 30000 THEN (WCLJF * 0.02)
      ELSE 0 END AS WXLJF
        
    FROM BFCRM.HYK_JFZH where WCLJF >= 5000
      

  5.   


    SELECT CASE WHEN WCLJF > 100000 THEN (WCLJF - 100000) * 0.05+2000
                WHEN WCLJF BETWEEN 50000 AND 100000 THEN ( WCLJF - 50000 ) * 0.04 +1200
    WHEN WCLJF BETWEEN 30000 AND 50000 THEN ( WCLJF - 30000 ) * 0.03 + 600
    WHEN WCLJF BETWEEN 5000 AND 30000 THEN (WCLJF * 0.02)
       END
    FROM FROM BFCRM.HYK_JFZH WHERE WCLJF>5000
      

  6.   

    用不着写这么麻烦的:
    SELECT  
    CASE WHEN WCLJF > 100000 THEN ltrim((WCLJF - 100000) * 0.05+2000))
    WHEN WCLJF BETWEEN 50000 AND 100000 THEN ltrim(( WCLJF - 50000 ) * 0.04 +1200)
    WHEN WCLJF BETWEEN 30000 AND 50000 THEN ltrim(( WCLJF - 30000 ) * 0.03 + 600)
    WHEN WCLJF BETWEEN 5000 AND 30000 THEN ltrim((WCLJF * 0.02))
    else ''
    END
    FROM BFCRM.HYK_JFZH