如何根据最近的日期属性获取两个字段?

Posted

技术标签:

【中文标题】如何根据最近的日期属性获取两个字段?【英文标题】:How to get two fields based off a most recent date attribute? 【发布时间】:2021-01-31 05:25:38 【问题描述】:

我有两张桌子:

Billing 表和 Customer 表。 Billing 表和customer 表都有一个共同的Customer Number 属性。 计费表

我正在尝试创建一个视图,用于检索最近发票日期的客户代码和帐单编号。我在订购查询时遇到问题。

这是我目前所拥有的。

CREATE VIEW RECENT_ORDER
AS 
SELECT 
c.Customer_Num, b.Bill_Num
FROM CUSTOMER c 
INNER JOIN BILLING b ON c.Customer_Num = b.Customer_Num 
WHERE c.Fname='Jess' AND c.Lname='Hanks'
HAVING MAX(b.Bill_Date);

我也尝试将“HAVING”部分作为 WHERE 语句。

【问题讨论】:

HAVING MAX(b.Bill_Date); 是无效的 SQL 开头。 having 需要一个布尔表达式,但 max(bill_date) 返回一个 DATE 值 您使用的是哪种 DBMS 产品? “SQL”只是一种查询语言,而不是特定数据库产品的名称。请为您使用的数据库产品添加tag。 Why should I tag my DBMS 【参考方案1】:

这应该会得到你的答案:

CREATE VIEW RECENT_ORDER
AS 
SELECT c.customer_num, b.bill_num 
FROM customer c
JOIN billing b ON c.customer_num = b.customer_num
WHERE b.bill_date = 
(SELECT MAX(bill_date) FROM billing WHERE customer_num = b.customer_num)
AND c.Fname='Jess' AND c.Lname='Hanks'

虽然通常我不希望创建一个将结果限制为只有一个客户的视图!?如果您打算获取任何/所有客户的最新结果,请删除最后一行 AND c.Fname ...。请注意,如果客户在同一日期有不止一张发票,您可能会得到多个结果。

【讨论】:

以上是关于如何根据最近的日期属性获取两个字段?的主要内容,如果未能解决你的问题,请参考以下文章

如何获取两个日期时间字段的轨道分钟时差?

SQL:如何获取最近的记录

mysql如何提取两个日期之间的所有数据

mongo-> 如何从两个不同的集合中获取日期时间 desc 顺序的记录

如何在 postgresql 视图中获取两个日期时间字段的天数和小时数差异?

如何从 2 个表中选择最近的日期时间