none
请教这条语句如何编写 RRS feed

  • 问题

  • 表 T 如下所示

    a   b    c       d          
    --- ---  ------- -------
    001 1    1       null
    001 2    1       null
    001 3    1       null
    001 4    1       null
    002 1    1       null

    001 1    2       null
    001 2    2       null
    001 3    2       null
    001 4    2       null
    002 1    2       null

    001 1    11      null
    001 2    11      null
    001 3    11      null
    001 4    11      null
    002 1    11      null


    001 3    12      null
    002 1    12      null


    做查询
    1. select * from t where a=1 and b=1

    a           b           c           d          
    ----------- ----------- ----------- -----------
    1           1           1           NULL
    1           1           2           NULL
    1           1           11          NULL   

    (3 row(s) affected)

    2. select * from t where a=1 and b=2

    a           b           c           d          
    ----------- ----------- ----------- -----------
    1           2           1           NULL
    1           2           2           NULL
    1           2           11          NULL

    (3 row(s) affected)

    3. select * from t where a=1 and b=3

    a           b           c           d          
    ----------- ----------- ----------- -----------
    1           3           1           NULL
    1           3           2           NULL
    1           3           11          NULL
    1           3           12          NULL

    (4 row(s) affected)

    4. select * from t where a=1 and b=4

    a           b           c           d          
    ----------- ----------- ----------- -----------
    1           4           1           NULL
    1           4           2           NULL
    1           4           11          NULL

    (3 row(s) affected)

    5. select * from t where a=2 and b=1

    a           b           c           d          
    ----------- ----------- ----------- -----------
    2           1           1           NULL
    2           1           2           NULL
    2           1           11          NULL
    2           1           12          NULL

    (4 row(s) affected)

    如何编写语句让 查询1,2,4中的c=11时d=123 ,然后查询3,5中的 c=11时d=11,c=12时d=12  ?

    2009年10月7日 14:56

答案

全部回复

  • LZ大兄,2个SQL如下:
    select a,b,c,case c when 11 then 123 end as d from t where a=1 and b in (1,2,4)
    select a,b,c,case c when 11 then 11 when 12 then 12 end as d from t where (a=1 and b=3) or (a=2 and b=1)
    2009年10月8日 9:03
  • 是我没有说清楚,这个表是我简化后的一个表,真实的表比这个要复杂的多。我的意思是在以上所列的5个查询中,如何在不知道c是否有12的情况下来写语句。

    2009年10月8日 13:22
  • 一句SQL貌似不行,建议您先下SQL判断是否有12
    如果有,则case c when 11 then 11 when 12 then 12 end as d
    如果没有,则case c when 11 then 123 end as d
    2009年10月8日 14:12
  • ...我也是这样想的,但是怎么判断就成了问题,我的真实表里还有c=13、14的数据都要求在不同的条件下分别给d赋值,即c最大为13时,d的取值;c最大为14时,d的取值都是不一样的~~
    2009年10月9日 11:49