如果当天订购的产品不止一次,我希望得到orderdate
和productid
的结果。如果在任何日期都没有订购的产品超过一次,那么我想在两列中都返回null。
我已经得出了这样的结果:使用having
子句在表中存在至少一个产品被多次订购的满意情况。如果我尝试使用isnull
或coalesce
,则会收到错误消息,因为最终结果有两个值(date
和productID
)
select orderdate, prodid
from orders
group by orderdate, prodid
having count(*) > 1
在上述查询中使用isnull
时,出现此错误:
当未使用EXISTS引入子查询时,只能在选择列表中指定一个表达式。
答案 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
)