2
У меня есть пример таблицы здесь - я хочу получить все столбцы, которые имеют только значение 1. Является ли это возможным?SQL Server: получить имя столбца таблицы, используя условие
У меня есть пример таблицы здесь - я хочу получить все столбцы, которые имеют только значение 1. Является ли это возможным?SQL Server: получить имя столбца таблицы, используя условие
Его абсолютно возможно, но этот процесс является длительным, я использую loop
проверить данные exists
каждый столбец путем извлечения имени столбца из sys.columns
. Пожалуйста, попробуйте это, если это поможет вам в любом сроке:
Здесь я проверяю каждый столбец значения 1 только
CREATE TABLE testing(val1 INT, val2 INT, val3 INT)
INSERT INTO testing VALUES
(1, 0, 1),(1, 0, 1),(1, 1, 1)
Table: testing
val1 val2 val3
1 0 1
1 0 1
1 1 1
DECLARE @sql NVARCHAR(500), @list VARCHAR(500)
DECLARE @num INT=1, @col_name VARCHAR(100) = NULL, @cnt INT
WHILE(@num<=3)
BEGIN
SELECT @col_name = name FROM sys.columns
WHERE object_id = OBJECT_ID('testing') and column_id = @num
SET @cnt = 0
SET @sql = '
IF NOT EXISTS(SELECT 1 FROM testing WHERE ' + @col_name + ' = 0) SET @cnt = 1'
EXEC sp_executesql @sql, N'@cnt INT OUT', @cnt OUT
IF @cnt = 1
SET @list = COALESCE(@list + ',', '') + @col_name
SET @num = @num+1
END
SET @sql = '
SELECT ' + @list + ' FROM testing'
EXEC(@sql)
OUTPUT:
val1 val3
1 1
1 1
1 1
Ни один из столбцов в выборочных данных появляются фактически удовлетворяет это условие, но в любом случае Я думаю, вам понадобится динамический SQL, чтобы выбрать, какие столбцы будут отображаться в наборе результатов на основе этого требования. –