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=公共表表达式。这是“子查询”的另一种语法,我认为它稍微清理了查询。