SQL Server: преобразовать таблицу в отдельную двоичную версию

Я пытаюсь взять столбец, получить различные значения, создать новый столбец для каждого отдельного значения и поместить 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,

0

Ответов: 0

SQL Server: преобразовать таблицу в отдельную двоичную версию

Я пытаюсь взять столбец, получить различные значения, создать новый столбец для каждого отдельного значения и поместить 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,