如何根据列值显示或消失列

时间:2011-02-26 15:21:52

标签: sql-server visibility

我正在使用MSSQL。如何根据列值显示或消失列?

我想过使用CASE语句,但它不是。

请帮忙。

1 个答案:

答案 0 :(得分:4)

在单个select语句中,您无法使列消失;列的数量和名称由select子句修复。但是,您可以覆盖输出中列的值,这是您通常使用casenullifcoalesce表达式的位置。例如:

SELECT col1, col2, CASE WHEN col3 = x or col3 = y THEN null ELSE col3 END as col3
  FROM someTable

在这种情况下,col3仍将在输出中,但如果它满足case语句中指定的某些条件,则其值将为null。

如果你真的不想让列完全存在,那么你需要编写多个select语句并选择要执行的语句。例如:

declare @checkValue int
select @checkValue = max(col3) from someTable
if (@checkValue = x or @checkValue = y)
    select col1, col2 from someTable
else
    select col2, col2, col3 from someTable

这是一个不寻常的建筑。允许列出现在输出中并简单地覆盖其值更为常见。