Как вставить код T-SQL после выражения CASE? - PullRequest
0 голосов
/ 23 марта 2019

Я хочу написать код T-SQL после регистра в SQL Server.Вот пример:

    case count(code)
    WHEN 0 THEN 
    insert into a(c,v,h) values(f,g,h)
    WHEN 1 THEN 
    .
    .
    .
    WHEN 2 THEN 
    .
    .
    .

    END 
    from tbl_A

Ответы [ 2 ]

1 голос
/ 23 марта 2019

Вы можете переписать свою логику следующим образом:

INSERT INTO a (c, v, h)
SELECT
    CASE COUNT(code) WHEN 0 THEN 'f'
                     WHEN 1 THEN 'i'
                     WHEN 2 THEN 'l' END,
    CASE COUNT(code) WHEN 0 THEN 'g'
                     WHEN 1 THEN 'j'
                     WHEN 2 THEN 'm' END,
    CASE COUNT(code) WHEN 0 THEN 'h'
                     WHEN 1 THEN 'k'
                     WHEN 2 THEN 'n' END
FROM tbl_A;

Если предположить, что число кодов равно 0, это приведет к вставке кортежа (f, g, h) в таблицу a.Если бы счет был 1, он вставил бы (i, j, k) и т. Д.

1 голос
/ 23 марта 2019

T-SQL не имеет оператора CASE для потока управления. SQL (как правило, не только T-SQL) имеет выражение CASE, которое можно использовать в запросах.

Похоже, вам нужна условная логика, которая предоставляется if. Мое предположение:

if not exists (select 1 from tbl_a)
begin
    insert into a(c, v, h)
        values(f, g, h) ;
end;
else . . .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...