【问题标题】: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

标签: sql join greatest-n-per-group


【解决方案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 ...。请注意,如果客户在同一日期有不止一张发票,您可能会得到多个结果。

【讨论】:

    猜你喜欢
    • 2016-01-30
    • 2022-08-06
    • 1970-01-01
    • 2021-01-28
    • 1970-01-01
    • 1970-01-01
    • 2021-07-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多