Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 如何根据条件选择select语句的列?_Sql Server 2005 - Fatal编程技术网

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

Sql server 2005 如何根据条件选择select语句的列?,sql-server-2005,Sql Server 2005,我必须创建一个SQLServer2005查询,该查询检查表中一个属性的值,并根据其值选择不同的列集。 我该怎么做 例如 在表“car”中,如果“类型”属性的值为1和2 当type=1时,我想执行一个包含3列的select“query1”。 当type=2时,我想用其他4列执行另一个select“query2” 我该怎么做? 请帮助。我想您看到的是一个带有If语句的存储过程。CASE可以工作,但不能更改返回的列数 SELECT Col1 = CASE WHEN Type = 1 THEN (S

我必须创建一个SQLServer2005查询,该查询检查表中一个属性的值,并根据其值选择不同的列集。 我该怎么做

例如

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

我该怎么做?
请帮助。

我想您看到的是一个带有If语句的存储过程。CASE可以工作,但不能更改返回的列数

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,您可能会得到更好的答案或不同的更好阅读方法。

我很想知道为什么我的和尽管的答案被降级。