2011-02-26 40 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 

這是一個不尋常的結構。讓列出現在輸出中並簡單地覆蓋它的值是非常常見的。