Sql server 2008 SQL Server:两个表的最大日期

Sql server 2008 SQL Server:两个表的最大日期,sql-server-2008,Sql Server 2008,我需要查找客户最后一次为所有客户和所有项目订购项目的时间。我想我会从客户最后一次订购任何东西开始。这将涉及两个表oeordhdr\U sql和oehdrhst\U sql都有cus\u no和ord\u dt 我在 select arcusfil.cus_no, Order_Date.orddt from arcusfil_sql arcusfil join (SELECT cus_no, MAX(MaxDate) AS orddt

我需要查找客户最后一次为所有客户和所有项目订购项目的时间。我想我会从客户最后一次订购任何东西开始。这将涉及两个表
oeordhdr\U sql
oehdrhst\U sql
都有
cus\u no
ord\u dt

我在

select 
    arcusfil.cus_no, Order_Date.orddt
from 
    arcusfil_sql arcusfil
join 
    (SELECT 
         cus_no, MAX(MaxDate) AS orddt 
     FROM 
         (SELECT 
              cus_no, MAX(ord_dt) AS MaxDate 
          FROM 
              oeordhdr_sql 
          GROUP BY
              cus_no

          UNION

          SELECT 
              cus_no, MAX(ord_dt) AS MaxDate 
          FROM 
              oehdrhst_sql 
          GROUP BY 
              cus_no) Order_date ON arcusfil.cus_no = Order_date.cus_no

您在上的之前缺少一个关闭)来关闭用于加入的内部表

select 
    arcusfil.cus_no, Order_Date.orddt
from 
    arcusfil_sql arcusfil
join 
    (SELECT 
         cus_no, MAX(MaxDate) AS orddt 
     FROM 
         (SELECT 
              cus_no, MAX(ord_dt) AS MaxDate 
          FROM 
              oeordhdr_sql 
          GROUP BY
              cus_no

          UNION

          SELECT 
              cus_no, MAX(ord_dt) AS MaxDate 
          FROM 
              oehdrhst_sql 
          GROUP BY 
              cus_no) MaxDates
    ) Order_date ON arcusfil.cus_no = Order_date.cus_no
我喜欢使用CTE进行类似这样的查询,以保持事情更干净:

;WITH MaxDates AS (
     SELECT cus_no, MAX(ord_dt) AS MaxDate 
     FROM oeordhdr_sql 
     GROUP BY cus_no
     UNION
     SELECT cus_no, MAX(ord_dt) AS MaxDate 
     FROM oehdrhst_sql 
     GROUP BY cus_no
),
Order_Date AS (
    SELECT cus_no, MAX(MaxDate) AS orddt 
    FROM MaxDates
    GROUP BY cus_no
)
SELECT arcusfil.cus_no, Order_Date.orddt
FROM arcusfil_sql arcusfil
INNER JOIN Order_Date on arcusfil.cus_no = Order_date.cus_no

一旦我完成上述查询,我将需要添加oeordlin_sql.item_no和oelinhst_sql.item_noth第一个查询在最后一行的“')”上出现错误;第二个查询返回:列“MaxDates.cus_no”在选择列表中无效,因为它不包含在聚合函数或GROUP BY子句中。您能告诉我什么是CTE吗?@RInzana抱歉,已修复它们。CTE=公共表表达式。这是“子查询”的另一种语法,我认为它稍微清理了查询。