В пределах одного оператора 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.
ЕслиВы действительно не хотите, чтобы столбец был там вообще, тогда вам нужно написать несколько операторов 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
Это необычная конструкция.Действительно более распространено, чтобы столбец появлялся в выходных данных и просто перезаписывал его значение.