如何在CASE表达式后插入T-SQL代码?
我想在SQL Server中的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-
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
元组中,这意味着它是某个文字值的占位符。