Mysql 如何通过另一个MAX(datetime)列选择列?

Mysql 如何通过另一个MAX(datetime)列选择列?,mysql,Mysql,我正在处理一个汇总查询,该查询将汇总交易总数,提取最近的交易日期,并提取最近的交易数量。到目前为止,我所做的工作如下: SELECT A.bill_cust_code, A.product_code, A.pack_code, C.name, MAX(A.invoice_date) AS last_purchase_date, SUM(IF(A.invoice_date>DATE_FORMAT(NOW(), '%Y'),A.total_sal

我正在处理一个汇总查询,该查询将汇总交易总数,提取最近的交易日期,并提取最近的交易数量。到目前为止,我所做的工作如下:

SELECT
    A.bill_cust_code,
    A.product_code,
    A.pack_code,
    C.name,
    MAX(A.invoice_date) AS last_purchase_date,
    SUM(IF(A.invoice_date>DATE_FORMAT(NOW(), '%Y'),A.total_sales,0)) AS ytd_sales,
    SUM(IF(A.invoice_date<DATE_FORMAT(NOW(), '%Y') AND A.invoice_date>DATE_FORMAT(NOW() - INTERVAL 1 YEAR, '%Y'),A.total_sales,0)) AS last_year_sales,
    A.source
FROM
    sales AS A
INNER JOIN
    prodware AS B ON (B.product_code = A.product_code AND B.pack_code = A.pack_code AND B.warehouse_code = A.warehouse_code)
INNER JOIN
    product AS C ON A.product_code=C.product_code
WHERE
    B.type='Y'
GROUP BY
    A.bill_cust_code,A.product_code,A.source

我想要另一列last\u purchase\u quantity,它是MAXA.invoice\u date返回的记录中的数量。

您可以将上述内容作为子查询,然后在外部查询中选择附加信息。 我没有测试我键入的内容,因为我没有结构,所以请修复键入中的任何错误

SELECT sub_tab.bill_cust_code,
       sub_tab.product_code,
       sub_tab.pack_code,
       sub_tab.name,
       sub_tab.last_purchase_date,
       (select sales.quantity
        from sales
        where sales.invoice_date=sub_tab.last_purchase_date) as quantity,
       sub_tab.ytd_sales,
       sub_tab.last_year_sales,
       sub_tab.source
RFOM (

 SELECT
    A.bill_cust_code,
    A.product_code,
    A.pack_code,
    C.name,
    MAX(A.invoice_date) AS last_purchase_date,
    SUM(IF(A.invoice_date>DATE_FORMAT(NOW(), '%Y'),A.total_sales,0)) AS ytd_sales,
    SUM(IF(A.invoice_date<DATE_FORMAT(NOW(), '%Y') AND A.invoice_date>DATE_FORMAT(NOW() - INTERVAL 1 YEAR, '%Y'),A.total_sales,0)) AS last_year_sales,
    A.source
FROM
    sales AS A
INNER JOIN
    prodware AS B ON (B.product_code = A.product_code AND B.pack_code = A.pack_code AND B.warehouse_code = A.warehouse_code)
INNER JOIN
    product AS C ON A.product_code=C.product_code
WHERE
    B.type='Y'
GROUP BY
    A.bill_cust_code,A.product_code,A.source
) sub_tab
SELECT sub_tab.bill_cust_code,
       sub_tab.product_code,
       sub_tab.pack_code,
       sub_tab.name,
       sub_tab.last_purchase_date,
       (select sales.quantity
        from sales
        where sales.invoice_date=sub_tab.last_purchase_date) as quantity,
       sub_tab.ytd_sales,
       sub_tab.last_year_sales,
       sub_tab.source
RFOM (

 SELECT
    A.bill_cust_code,
    A.product_code,
    A.pack_code,
    C.name,
    MAX(A.invoice_date) AS last_purchase_date,
    SUM(IF(A.invoice_date>DATE_FORMAT(NOW(), '%Y'),A.total_sales,0)) AS ytd_sales,
    SUM(IF(A.invoice_date<DATE_FORMAT(NOW(), '%Y') AND A.invoice_date>DATE_FORMAT(NOW() - INTERVAL 1 YEAR, '%Y'),A.total_sales,0)) AS last_year_sales,
    A.source
FROM
    sales AS A
INNER JOIN
    prodware AS B ON (B.product_code = A.product_code AND B.pack_code = A.pack_code AND B.warehouse_code = A.warehouse_code)
INNER JOIN
    product AS C ON A.product_code=C.product_code
WHERE
    B.type='Y'
GROUP BY
    A.bill_cust_code,A.product_code,A.source
) sub_tab