【问题标题】:SQL Server error :only one expression can be specified in the select list when the subquery is not introduced with EXISTSSQL Server 错误:当子查询没有用 EXISTS 引入时,选择列表中只能指定一个表达式
【发布时间】:2018-11-29 22:53:37
【问题描述】:
declare @mode int

select 
    @mode = (select top 1 order_dow, count(*) 
             from orders_denorm 
             group by order_dow 
             order by 2 desc)

我正在尝试使用 SQL Server 查找 order_dow 列的模式。我收到以下错误消息:

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

但是,只有不使用select @mode 的查询才能正常工作。

【问题讨论】:

  • 您似乎错过了消息的在选择列表中部分。如何同时将order_dowcount(*) 分配给@mode

标签: sql sql-server


【解决方案1】:

你想要 模式 所以你只想要一列:

select @mode = (select top 1 order_dow from orders_denorm group by order_dow order by count(*) desc);

也许你想要两个:

select @mode = order_dow, @mode_cnt = cnt
from (select top 1 order_dow, count(*) as cnt
      from orders_denorm
      group by order_dow
      order by count(*) desc
     );

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    相关资源
    最近更新 更多