基于CASE从数据库中选择值

时间:2011-06-23 12:28:31

标签: sql sql-server

我有一个数据库表Tb1,其中包含n列和m行数。

Tb1
========================================
field_0... field_k... field_p... field_n

这是我需要在SQL中表达的伪代码

if(count(select distinct Tb1.field_k) > 1) return "string_literal"
else return Tb1.field_p

结果集应该有m个行数。

1 个答案:

答案 0 :(得分:2)

SELECT
    CASE
        WHEN x.testcase > 1 THEN "string_literal"
        ELSE Tb1.field_p
    END AS SomeCol
FROM
   Tb1
   CROSS JOIN
   (
   SELECT COUNT (DISTINCT Tb1.field_k) AS testcase
   FROM Tb1
   ) x

注意:

  • Tb1.field_p必须是与“string_literal”
  • 兼容的数据类型