【发布时间】:2021-09-08 20:58:11
【问题描述】:
我在 Teradata 中有一张表格,其中包含客户及其与某些产品的交易。
| Client | Product | Date |
|---|---|---|
| C1 | P1 | 1.1.2020 |
| C1 | P1 | 31.1.2020 |
| C1 | P2 | 1.2.2020 |
| C1 | P3 | 1.3.2020 |
| C2 | P2 | 1.4.2020 |
| C2 | P2 | 1.5.2020 |
我需要一个选择,它将为每个客户返回一行,其中包含所有产品的最后交易日期和所选产品的最后交易日期,例如P1。如果P1没有销售,则显示为null。
| Client | LastP | LastP1 |
|---|---|---|
| C1 | 1.3.2020 | 31.1.2020 |
| C2 | 1.5.2020 | null |
我可以单独获取值,但如何为每个客户端接收一行?
SELECT
Max (Date) Over (PARTITION BY Client) AS LastP,
CASE WHEN Product='P1'
THEN Max (Date) Over (PARTITION BY Client, Product)
ELSE NULL END AS LastP1
感谢您的建议。
【问题讨论】:
标签: sql teradata window-functions