AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题 / 173601
Accepted
tfenwick11
tfenwick11
Asked: 2017-05-16 07:21:20 +0800 CST2017-05-16 07:21:20 +0800 CST 2017-05-16 07:21:20 +0800 CST

通过引用多个表的连接条件的子查询删除重复结果

  • 772

使用下面的代码,我最初试图不使用子查询来消除“重复数据”(它在技术上不是重复数据,因为每个订单都有几行价格和重量不同的数据,但我想将我的结果合并到我只获得不同的订单号)但是没有运气只使用连接条件和 SUM/GROUP BY。我在第一次加入子查询时采用了返回带有“价格”和“已发货”字段的不同订单。并且相应地工作,我收到了我需要的订单。但是通过使用整个脚本,我意识到“carton_no”导致返回“重复”结果,所以我尝试添加另一个子查询,但我似乎收到了错误:

消息 107,级别 16,状态 2,第 17 行列前缀“TCT”与查询中使用的表名或别名不匹配。

提供错误的代码块:


LEFT OUTER JOIN 
  (
       SELECT TRCB.order_no, TRCB.Skid_Height_Inches, TCT.carton_no FROM tdc_revshelf_carton_box TRCB WITH (NOLOCK) 
       INNER JOIN tdc_carton_tx TCT 
       ON TRCB.order_no = TCT.order_no
       AND TRCB.order_ext = TCT.order_ext
       AND TRCB.carton_no = TCT.carton_no   
       GROUP BY TRCB.order_no, TRCB.Skid_Height_Inches, TCT.carton_no
   ) TRCB ON  TRCB.order_no = TCT.tdc_carton_tx 

DECLARE @location VARCHAR(10)
DECLARE @dateshipped DATETIME 
SET @location = 'RAS 2'
SET @DateShipped = DATEADD(day, 0, DATEDIFF(day, 0, GETDATE())-3)


SELECT  

      SUM (L.Shipped ) AS Shipped
    , SUM (L.Price ) AS Price
    , O.Order_no
    , O.Ext
    , O.Cust_Code 
    , O.Ship_To_Name 
    , O.Freight_Allow_Type 
    , TCT.Carton_no 
    , TPM.dim_ext_x  
    , TPM.dim_ext_y 
    , TRCB.Number_of_Boxes 
    , MAX(TRCB.Skid_Height_Inches )
    , MAX(O.Routing) AS 'Routing'  
    , MAX(O.User_def_fld9) AS 'bol_no'  
    , MAX(Ship_to_name) AS Ship_to_name_1 
    , MAX(Ship_to_add_3) AS Ship_to_add_3 
    , MAX(L.[location]) AS 'Location' 
    , MAX(O.cust_code ) AS 'Cust_code_1' 
    , MAX(O.user_def_fld10) AS 'Skids' 
    , MAX(O.user_def_fld12) AS 'Weight' 
    , ISNULL(MAX(BH.est_freight_cost),0) AS 'BOL_est_Freight'
    , TCT.[weight] + TPM.[weight] AS 'Total_Pallet_Weight'




FROM orders O WITH (NOLOCK)
INNER JOIN  
    (
       SELECT  o.order_no, L.shipped, L.price FROM orders O WITH (NOLOCK) INNER JOIN Ord_list L ON O.order_no = L.order_no
        WHERE O.routing NOT LIKE 'FEDX%' 
        AND O.routing NOT IN ('UPS', 'UPS 1', 'UPS 2', 'UPS 3') 
        AND ISNULL(O.void,'') <> 'V'
        AND L.location = @location
        GROUP BY O.order_no, L.shipped, L.price
   )
   L ON O.order_no = L.order_no
JOIN xfers X
     ON O.order_no = X.xfer_no
JOIN xfer_list XL
    ON  X.xfer_no = XL.xfer_no
--INNER JOIN ord_list L WITH (NOLOCK)
--  ON  O.order_no = L.order_no
--     AND O.ext = L.order_ext
INNER JOIN arcust C WITH (NOLOCK)
    ON O.cust_code = C.customer_code 
LEFT OUTER JOIN armaster A WITH (NOLOCK)
    ON A.customer_code = O.cust_code  
       AND A.ship_to_code = O.ship_to
       AND A.location_code = O.location  
LEFT OUTER JOIN tdc_pkg_master TPM WITH (NOLOCK)
     ON TCT.carton_type=TPM.pkg_code
INNER JOIN tdc_carton_tx TCT WITH (NOLOCK)
     ON TPM.pkg_code = TCT.carton_type
LEFT OUTER JOIN 
  (
       SELECT TRCB.order_no, TRCB.Skid_Height_Inches, TCT.carton_no FROM tdc_revshelf_carton_box TRCB WITH (NOLOCK) 
       INNER JOIN tdc_carton_tx TCT 
       ON TRCB.order_no = TCT.order_no
       AND TRCB.order_ext = TCT.order_ext
       AND TRCB.carton_no = TCT.carton_no   
       GROUP BY TRCB.order_no, TRCB.Skid_Height_Inches, TCT.carton_no
   ) TRCB
        ON  TRCB.order_no = TCT.tdc_carton_tx 
LEFT OUTER JOIN ras_bol_details BD WITH (NOLOCK)
    ON X.xfer_no = BD.bl_src_no
       AND X.xfer_no = BD.bl_src_no AND BD.order_type IN ('T','S')
LEFT OUTER JOIN ras_bol_header BH WITH (NOLOCK)
    ON BD.bl_no = BH.bl_no
       AND O.order_no = BD.bl_src_no 
       AND O.ext = BD.bl_src_ext 

WHERE  DATEADD(day, 0, DATEDIFF(day, 0, O.date_shipped)) >= @dateshipped




GROUP BY

      O.order_no
    , O.ext
    , O.cust_code
    , O.ship_to_name 
    , O.freight_allow_type 
    , TCT.carton_no 
    , TCT.[weight]
    , TPM.[weight]
    , TPM.dim_ext_x  
    , TPM.dim_ext_y 
    , TRCB.number_of_boxes 
    , TRCB.skid_height_inches 
join subquery
  • 1 1 个回答
  • 2297 Views

1 个回答

  • Voted
  1. Best Answer
    tfenwick11
    2017-05-17T11:09:22+08:002017-05-17T11:09:22+08:00

    这已经解决了,通过重组程序和学习可以删除报告中不需要的一些列。我能够摆脱第二个子查询。谢谢,

    • 0

相关问题

  • 在 values 子句中不允许子查询的原因可能是什么?

  • 我可以自动执行 MySQL 查询中的“on”语句吗?

  • 如何使用外部表别名将 Top 1 子查询转换为 Oracle?

  • INNER JOIN 和 OUTER JOIN 有什么区别?

  • JOIN 语句的输出是什么样的?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve