【问题标题】:Subquery with Ties带关系的子查询
【发布时间】:2014-04-04 06:49:55
【问题描述】:

目标:显示书籍的 ID、书名和酒吧。销量最高的图书年份;包括关系。在确定一本书的销量时,使用总扩展成本(数量 * 订单价格)。

规则

  • 仅使用子查询
  • 没有连接
  • 没有联合
  • 只有子查询

查询

SELECT  book_id,
        title,
        year_publd
FROM bkinfo.books
where book_id =
    (
    SELECT TOP 1 WITH TIES book_id, quantity*order_price as Extended_cost
    from bkorders.order_details
    order by quantity*order_price DESC
    )
;

错误

Msg 116, Level 16, State 1, Line 10 只能有一个表达式 未引入子查询时在选择列表中指定 存在。

子查询显示数量最多的 book_id,但是当它作为一个整体运行时,我收到一个错误。请解释我应该怎么做。

【问题讨论】:

  • 您是否尝试在每个单独的列的 where 条件中添加“and”?

标签: sql-server tsql


【解决方案1】:
;with cte as
(
select book_id, quantity*order_price as Extended_cost from bkorders.order_details
order by Extended_cost DESC
)

select top 1 with ties * from cte

【讨论】:

    【解决方案2】:
    SELECT book_id, title, year_publd
    FROM bkinfo.books
    where book_id =
        (
        SELECT TOP 1 book_id
        from bkorders.order_details
        order by quantity*order_price DESC
    
        )
    ;
    

    【讨论】:

    • 谢谢!我不知道您可以使用“订购方式”来做到这一点
    猜你喜欢
    • 1970-01-01
    • 2020-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多