2011-02-26 52 views

回答

4

在单个select声明中,您不能使列消失;列的编号和名称由select子句固定。但是,您可以覆盖输出中列的值,这是您通常使用case,nullif或​​3210表达式的列的值。例如:

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

在这种情况下,COL3仍然要在输出,但如果它满足的情况下语句中指定一定的条件下它的值将是无效的。

如果你真的不希望该列在那里,那么你将需要编写多个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 

这是一个不寻常的结构。让列出现在输出中并简单地覆盖它的值是非常常见的。