Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在CASE表达式后插入T-SQL代码?_Sql_Sql Server_Tsql - Fatal编程技术网

如何在CASE表达式后插入T-SQL代码?

如何在CASE表达式后插入T-SQL代码?,sql,sql-server,tsql,Sql,Sql Server,Tsql,我想在SQL Server中的case之后编写一个T-SQL代码。以下是一个例子: 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 T-SQL没有用于控制流的CASE语句。SQL(一般来说,不仅仅是T-

我想在SQL Server中的case之后编写一个T-SQL代码。以下是一个例子:

    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

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 . . .

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 . . .

您可以将逻辑改写为:

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)
,依此类推。

您可以将逻辑重写为:

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)
,依此类推。

您尝试编写代码是没有意义的。请提供示例数据、所需结果,并解释您要执行的操作。
CASE
是一个表达式,而不是逻辑流运算符。您尝试编写代码毫无意义。请提供示例数据、所需结果以及对所需操作的解释。
CASE
是一个表达式,而不是一个逻辑流运算符。我认为您的意思是
f
,而不是
'f'
(等等),因为这些都是列。@Sami我实际上不是这个意思,因为
f
出现在
元组中,这意味着它是某个文字值的占位符。我想你的意思是
f
而不是
'f'
(等等),因为这些都是列。@Sami实际上不是这个意思,因为
f
出现在
VALUES
元组中,这意味着它是某个文字值的占位符。