我正在使用MSSQL。如何根据列值显示或消失列?
我想过使用CASE语句,但它不是。
请帮忙。
答案 0 :(得分:4)
在单个select
语句中,您无法使列消失;列的数量和名称由select
子句修复。但是,您可以覆盖输出中列的值,这是您通常使用case
,nullif
或coalesce
表达式的位置。例如:
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
这是一个不寻常的建筑。允许列出现在输出中并简单地覆盖其值更为常见。