我有以下 SQL Server 代码:
declare @n_count_pr int, @n_count_err int, @v_out_pr varchar(100);
begin
set @n_count_pr = (select count (*) from table_PR)
set @n_count_err = (select count (*) from table_err)
if (@n_count_err > 0 AND @n_count_pr > 0)
set @v_out_pr = 'Output 1'
else if (@n_count_err > 0 AND @n_count_pr = 0)
set @v_out_pr = 'Output 2'
print @v_out_pr
end;
它工作得很好,但我需要不同的结构。
我需要一个简单的选择来做同样的事情。
你能帮我吗?
在上面的过程中,我只有两个输出,没有其他输出。 如果除了输出 1 和输出 2 之外还有任何其他输出,则应将其丢弃。
就像:
如果 i = a 则输出 1 否则如果 i = b 则输出 2
但我没有 else,所以所有其他选项 i=c 或 i = d,我不在乎。我想放弃这些选项。
如果我确实想要其他选择,我会这样做:
if (@n_count_err > 0 AND @n_count_pr > 0)
set @v_out_pr = 'Output 1'
else if (@n_count_err > 0 AND @n_count_pr = 0)
set @v_out_pr = 'Output 2'
else
set @v_out_pr = 'any other option'
--找到了解决方案:)
select bit from
(SELECT CASE
WHEN (SELECT COUNT (*) FROM TABLE_ERR) > 0 AND (SELECT COUNT (*) FROM TABLE_PR) > 0 THEN 'OUTPUT 1'
WHEN (SELECT COUNT (*) FROM TABLE_ERR) > 0 AND (SELECT COUNT (*) FROM TABLE_PR) = 0 THEN 'OUTPUT 2'
ELSE null
END as bit) Mytable
where bit is not null
最佳答案
试试这个:
SELECT CASE
WHEN (SELECT COUNT (*) FROM TABLE_ERR) > 0 AND (SELECT COUNT (*) FROM TABLE_PR) > 0 THEN 'OUTPUT 1'
WHEN (SELECT COUNT (*) FROM TABLE_ERR) > 0 AND (SELECT COUNT (*) FROM TABLE_PR) = 0 THEN 'OUTPUT 2'
ELSE ''
END
关于sql-server - SQL Server : case without a null return,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38186843/