在SQL中,如何检查值大于1的结果是否为空条件?

时间:2019-07-28 07:23:44

标签: sql sql-server tsql null

如果当天订购的产品不止一次,我希望得到orderdateproductid的结果。如果在任何日期都没有订购的产品超过一次,那么我想在两列中都返回null。

我已经得出了这样的结果:使用having子句在表中存在至少一个产品被多次订购的满意情况。如果我尝试使用isnullcoalesce,则会收到错误消息,因为最终结果有两个值(dateproductID

select orderdate, prodid
from orders
group by orderdate, prodid
having count(*) > 1

在上述查询中使用isnull时,出现此错误:

  

当未使用EXISTS引入子查询时,只能在选择列表中指定一个表达式。

1 个答案:

答案 0 :(得分:3)

如果查询没有结果,请使用UNION ALL获取带有空值的行:

with cte as (
  select orderdate, prodid
  from orders
  group by orderdate, prodid
  having count(*)>1
)

select * from cte
union all
select null, null
where not exists (
  select 1 from cte
)