我有一个这样的存储过程:
declare @myVal int
select
t2.short_descr , count(*) as count
FROM
t1
INNER JOIN
t2 ON t1.id = t2.id
where
[date] BETWEEN DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0) and GETDATE())
group by
t2.short_descr
它运行良好,现在我希望程序返回结果,即使它是空的;在这种情况下,我想返回
select @myVal
我试过这样:
declare @myVal int
select
t2.short_descr , count(*) as count
FROM
t1
INNER JOIN
t2 ON t1.id = t2.id
where
[date] BETWEEN DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0) and GETDATE())
group by
t2.short_descr
IF @@ROWCOUNT = 0
select @myVal
但是当结果为空时,存储过程会选择2个结果:空和@myVal
。我想如果是空的,请选择@myVal
。怎么样?
答案 0 :(得分:2)
您可以像这样添加EXISTS
支票:
IF EXISTS ( SELECT 1 FROM t1 INNER JOIN t2 ON t1.id = t2.ID
where [date] BETWEEN DATEADD(day,DATEDIFF(day,0,GETDATE()),0) and GETDATE()) )
BEGIN
select t2.short_descr , count(*) as count
FROM t1
INNER JOIN t2 ON t1.id = t2.id
where [date] BETWEEN DATEADD(day,DATEDIFF(day,0,GETDATE()),0) and GETDATE())
group by t2.short_descr
END
ELSE
BEGIN
select @myVal
END