我在查询上工作了几个小时,在创建查询时会遇到一些麻烦,该查询从2个表中返回一些过滤后的值。
Table A [QUOTATION] :
quotation_code STRING,
customer_id STRING,
offer_id STRING
Table B [OFFER] :
offer_id STRING,
offer_date TIMESTAMP
一个客户可以有多个报价,每个报价可以有多个报价。报价也可以有多个客户(我认为这无关紧要)
我需要编写一个查询,该查询为每个客户返回链接到他的最后一个报价。例如(使用内部联接和日期格式MM / DD / YYYY进行选择):
| quotation_code | customer_id | offer_id | offer_date |
| 1 | 1 | 2 | 01/01/2019 |
| 1 | 1 | 2 | 01/02/2019 |
| 1 | 1 | 1 | 01/10/2019 |
| 2 | 2 | 3 | 12/12/2018 |
| 2 | 2 | 6 | 01/01/2019 |
| 1 | 3 | 4 | 03/15/2019 |
| 4 | 2 | 2 | 03/02/2019 |
预期结果是:
| quotation_code | customer_id | offer_date |
| 1 | 1 | 01/10/2019 |
| 4 | 2 | 03/02/2019 |
| 1 | 3 | 03/15/2019 |
我编写了此查询,以为每个客户的每个quotation_code返回每个max(offer_date)
SELECT
Q.customer_id AS custo_id,
MAX(CAST(OFR.offr_date as date)) as offer_date,
Q.quotation_code
FROM QUOTATION Q
INNER JOIN OFFER OFR ON Q.OFFER_ID = OFR.OFFER_ID
group by q.quotation_code, q.customer_id);
如果有解决方案,您将拯救我的一天:D