【问题标题】:In SQL, how to check for null condition on result with more than 1 value?在 SQL 中,如何检查超过 1 个值的结果的空条件?
【发布时间】:2019-07-28 07:23:44
【问题描述】:

如果该产品在当天被多次订购,我希望在结果中得到orderdateproductid。如果在任何日期都没有多次订购产品,我想在两列中都返回 null。

我已经使用having 子句找出了表格中存在至少一种产品被多次订购的快乐情况的结果。如果我尝试使用isnullcoalesce,我会收到一个错误,因为我的最终结果有两个值(dateproductID

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

在上面的查询中使用isnull,我得到这个错误:

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

【问题讨论】:

  • 您能提供示例输入/输出数据吗?
  • 您能否提供您尝试运行的完整查询,我从您收到的错误消息中怀疑您正在尝试在 IN 子句中返回多个列,这是您无法做到的,但是您的上面的查询不包含任何实际会引发此错误的内容。

标签: sql sql-server tsql null


【解决方案1】:

如果您的查询没有结果,请使用 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
)

【讨论】:

    猜你喜欢
    • 2014-11-14
    • 1970-01-01
    • 1970-01-01
    • 2020-07-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-30
    • 1970-01-01
    相关资源
    最近更新 更多