Sql server SQL Server:不返回空值的情况
我有以下SQL Server代码:Sql server SQL Server:不返回空值的情况,sql-server,select,Sql Server,Select,我有以下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 >
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
但我没有其他选项,所以其他选项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 IIF(x.cnt1 > 0 AND y.cnt2 > 0, 'Output 1',
IIF(x.cnt1 = 0 AND y.cnt2 > 0, 'Output 2', NULL) AS Output
FROM (SELECT COUNT(*) FROM table_PR) AS x(cnt1)
CROSS JOIN (SELECT COUNT(*) FROM table_err) AS y(cnt2)
试试这个:
您也可以尝试以下方法:
SELECT CASE WHEN T.C1 > 0 AND T.C2 > 0 THEN 'OutPut1'
WHEN T.C1 > 0 AND T.C2 = 0 THEN 'OutPut2'
END AS Col
FROM ( SELECT T1.C1 ,
T2.C2
FROM ( SELECT COUNT(*) AS C1
FROM table_ERR
) AS T1
CROSS JOIN ( SELECT COUNT(*) AS C2
FROM table_PR
) AS T2
) AS T;
这个网站是为编程问题。我们不是代码翻译服务。你做翻译,我们可能会尝试帮助修复你产生的任何问题。我对这个解决方案有一个小问题,当两个案例都为false时,案例返回null。那对我不起作用。如果两个案例都为false,则查询必须不返回任何内容。在CASE语句中添加了如果两个案例都失败将返回空字符串的其他部分。如果退出案例而不返回,情况如何?就像选择一个没有数据的表一样。可能吗?我需要一个只能返回输出1或输出2的选择。不能返回null或其他。就这两条线。这就像一个if而不是else。抱歉,我仍然不理解您的要求,您可以用示例输出更新您的问题吗?未解决查找错误-SQL Server数据库错误:“>”附近的语法不正确。@user2903517您使用的是哪一版本的SQL Server?Microsoft SQL Server 2008 R2 SP2谢谢,很高兴知道有不同的方法来解决这类问题。
SELECT CASE WHEN T.C1 > 0 AND T.C2 > 0 THEN 'OutPut1'
WHEN T.C1 > 0 AND T.C2 = 0 THEN 'OutPut2'
END AS Col
FROM ( SELECT T1.C1 ,
T2.C2
FROM ( SELECT COUNT(*) AS C1
FROM table_ERR
) AS T1
CROSS JOIN ( SELECT COUNT(*) AS C2
FROM table_PR
) AS T2
) AS T;