如何根据条件选择select语句的列?

时间:2009-03-30 10:22:19

标签: sql-server-2005

我必须创建一个SQL Server 2005查询,该查询检查表中一个属性的值,并根据其值选择不同的列集。 我怎样才能做到这一点?

例如

在表'car'中,如果'type'属性的值为1和2 当type = 1时,我想执行一个包含3列的select'query1'。 当type = 2时,我想用另外4个列执行另一个select'query2'。

我该怎么做? 请帮忙。

2 个答案:

答案 0 :(得分:1)

我认为您正在使用If语句查看存储过程。 CASE将起作用,但不能更改返回的列数。

答案 1 :(得分:-1)

SELECT
  Col1 = CASE WHEN Type = 1 THEN (SELECT Null FROM T1)
         ELSE (SELECT Col1 FROM T2) END
  , Col2 = CASE WHEN Type = 1 THEN (SELECT Col1 FROM T1)
           ELSE (SELECT Col2 FROM T2) END
  , Col3 = CASE WHEN Type = 1 THEN (SELECT Col2 FROM T1)
           ELSE (SELECT Col4 FROM T2) END
  , Col4 = CASE WHEN Type = 1 THEN (SELECT Col3 FROM T1)
           ELSE (SELECT Col4 FROM T2) END
FROM Cars

如果您向我们展示所涉及的所有表格的DDL,您可能会得到更好的答案或不同的(更好的阅读)方法。