Я пытаюсь взять столбец, получить различные значения, создать новый столбец для каждого отдельного значения и поместить 1 в этот столбец, если строка имела это значение и 0 в противном случае. См. Пример. Любая идея, как закодировать это в общем виде, который может обрабатывать любую таблицу без явных случаев, выполняемых вручную для каждого отдельного значения в столбце?
DECLARE @YourTable table (col1 varchar(5), col2 int)
insert into @YourTable values ('abcdf', 123)
insert into @YourTable values ('aaaaa', 456)
insert into @YourTable values ('bbbbb', 789)
insert into @YourTable values ('ccccc', 789)
insert into @YourTable values ('aaaaa', 789)
insert into @YourTable values ('abcdf', 789)
--This is source table
SELECT * FROM @YourTable
--Need this as result table
SELECT
CASE WHEN col1 = 'abcdf' then 1 else 0 end as is_abcdf,
CASE WHEN col1 = 'aaaaa' then 1 else 0 end as is_aaaaa,
CASE WHEN col1 = 'bbbbb' then 1 else 0 end as is_bbbbb,
CASE WHEN col1 = 'ccccc' then 1 else 0 end as is_ccccc,
CASE WHEN col2 = 123 then 1 else 0 end as is_123,
CASE WHEN col2 = 456 then 1 else 0 end as is_456,
CASE WHEN col2 = 789 then 1 else 0 end as is_789
FROM
@YourTable
sql,sql-server,sql-server-2012,
Я пытаюсь взять столбец, получить различные значения, создать новый столбец для каждого отдельного значения и поместить 1 в этот столбец, если строка имела это значение и 0 в противном случае. См. Пример. Любая идея, как закодировать это в общем виде, который может обрабатывать любую таблицу без явных случаев, выполняемых вручную для каждого отдельного значения в столбце?
DECLARE @YourTable table (col1 varchar(5), col2 int)
insert into @YourTable values ('abcdf', 123)
insert into @YourTable values ('aaaaa', 456)
insert into @YourTable values ('bbbbb', 789)
insert into @YourTable values ('ccccc', 789)
insert into @YourTable values ('aaaaa', 789)
insert into @YourTable values ('abcdf', 789)
--This is source table
SELECT * FROM @YourTable
--Need this as result table
SELECT
CASE WHEN col1 = 'abcdf' then 1 else 0 end as is_abcdf,
CASE WHEN col1 = 'aaaaa' then 1 else 0 end as is_aaaaa,
CASE WHEN col1 = 'bbbbb' then 1 else 0 end as is_bbbbb,
CASE WHEN col1 = 'ccccc' then 1 else 0 end as is_ccccc,
CASE WHEN col2 = 123 then 1 else 0 end as is_123,
CASE WHEN col2 = 456 then 1 else 0 end as is_456,
CASE WHEN col2 = 789 then 1 else 0 end as is_789
FROM
@YourTable
00SQL, SQL-сервер, SQL-сервер-2012,