【问题标题】:Orderby Clause Error in SQL QuerySQL 查询中的 Orderby 子句错误
【发布时间】:2018-04-30 07:17:53
【问题描述】:

我在执行以下查询时遇到错误:

INSERT Into dbo.[DRC_76_A-05 Deposits SBP Coding] 
SELECT '20180228' as BusinessDate,z.* 
FROM ( SELECT IND.L_SBP_CODE, TDEPO.Type_of_Deposit, 
              ISNULL(SUM(AC.WORKING_BALANCE),0) AS AMOUNT 
       FROM InsightSource.BS.ACCOUNT AC 
       LEFT JOIN InsightSource.BS.CUSTOMER CUS ON AC.CUSTOMER = CUS.[@ID] 
       INNER JOIN KMBL.DBO.TYPE_OF_DEPOSITS TDEPO ON AC.CATEGORY = TDEPO.Cat_ID 
       LEFT JOIN InsightSource.BS.INDUSTRY_LocalRef IND ON CUS.INDUSTRY = IND.[@Id] 
       GROUP BY IND.L_SBP_CODE, TDEPO.Type_of_Deposit 
       ORDER BY TDEPO.Type_of_Deposit ASC ) Z

错误:

ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效,除非还指定了 TOP、OFFSET 或 FOR XML

【问题讨论】:

  • 在视图定义中添加top N
  • 显示其余代码...
  • 这里不是截图,而是贴上sql。
  • @scaisEdge INSERT Into dbo.[DRC_76_A-05 Deposits SBP Coding] Select '20180228' as BusinessDate,z.* From (SELECT IND.L_SBP_CODE, TDEPO.Type_of_Deposit, ISNULL(SUM(AC.WORKING_BALANCE ),0) 作为 InsightSource.BS.ACCOUNT 的金额 AC 左加入 InsightSource.BS.CUSTOMER CUS ON AC.CUSTOMER = CUS.[@ID] INNER JOIN KMBL.DBO.TYPE_OF_DEPOSITS TDEPO ON AC.CATEGORY = TDEPO.Cat_ID 左加入InsightSource.BS.INDUSTRY_LocalRef IND ON CUS.INDUSTRY = IND.[@Id] GROUP BY IND.L_SBP_CODE, TDEPO.Type_of_Deposit ORDER BY TDEPO.Type_of_Deposit ASC )Z
  • 更新你的问题并添加你的代码..有问题不在评论中

标签: sql sql-server-2012


【解决方案1】:

您应该将 ORDER BY 移到子查询之外

  INSERT Into dbo.[DRC_76_A-05 Deposits SBP Coding] 
  Select '20180228' as BusinessDate,z.* 
  From ( 
      SELECT IND.L_SBP_CODE
            , TDEPO.Type_of_Deposit
            , ISNULL(SUM(AC.WORKING_BALANCE),0) AS AMOUNT 
      FROM InsightSource.BS.ACCOUNT AC 
      LEFT JOIN InsightSource.BS.CUSTOMER CUS ON AC.CUSTOMER = CUS.[@ID] 
      INNER JOIN KMBL.DBO.TYPE_OF_DEPOSITS TDEPO ON AC.CATEGORY = TDEPO.Cat_ID 
      LEFT JOIN InsightSource.BS.INDUSTRY_LocalRef IND ON CUS.INDUSTRY = IND.[@Id] 
      GROUP BY IND.L_SBP_CODE, TDEPO.Type_of_Deposit 
 ) Z
  ORDER BY Z.Type_of_Deposit ASC

【讨论】:

    【解决方案2】:

    错误信息一目了然:

    ORDER BY 子句在视图、内联函数、派生中无效 表、子查询和公用表表达式,除非 TOP、OFFSET 或 FOR XML 也被指定

    您正在 子查询 中执行 ORDER BY。它在所有情况下都是无用的,因此您可以简单地摆脱它。

    在收集和过滤所有数据后,在主查询中执行 ORDER BY

    【讨论】:

    • 如果我在子查询中注释该行,它编译成功,但在我的 ssrs 报告中,结果不是按表单排序的。
    • 再次阅读我的答案:您必须在主查询中移动 ORDER BY。
    • @MAunAli 您可以在主查询中插入订单
    猜你喜欢
    • 1970-01-01
    • 2015-10-15
    • 1970-01-01
    • 2021-01-29
    • 2017-05-24
    • 1970-01-01
    • 1970-01-01
    • 2021-03-03
    • 2023-03-21
    相关资源
    最近更新 更多