[英]Using Max with multiple columns from multiple table
我有 3 個表 t1=items (items) t2=sales offer catalog dates t3=sales offer catalog item offer price(同一個項目可以包含多次)
t1
t1id | t1項目代碼 |
---|---|
1 | A001 |
2 | A002 |
3 | A003 |
4 | A004 |
5 | A005 |
t2
t2id | t2offerdate |
---|---|
1 | 2021-02-25 |
2 | 2021-03-28 |
3 | 2021-02-10 |
4 | 2021-04-10 |
t3
t3id | t3.t1id | t3.t2id | t3.公式 |
---|---|---|---|
1--- | 1-------- | 4------ | 10,80----- |
2--- | 2-------- | 2-------- | 22,00----- |
3--- | 2-------- | 3-------- | 13,00----- |
4--- | 5-------- | 2-------- | 10,00----- |
5--- | 2-------- | 4------ | 11,25----- |
6--- | 1-------- | 3-------- | 4,50------ |
我最初需要 itemid 和 max(enddate)。 我創建了以下 SQL 查詢:
SELECT t1.ID, max(t2.ENDDATE) ENDDATE
FROM t1
LEFT JOIN t3 ON t1.id = t3.t1id
LEFT JOIN t2 ON t3.t2id = t2.id
GROUP BY t1.id
這工作正常,output 沒問題。 項目 ID 沒有重復多次,並且在第二列中顯示的最大日期與 t2(項目)和(t3)中的項目相結合。
ID ENDDATE
1 -- 2021-04-10
2 -- 2021-04-10
5 -- 2021-03-28
3 -- NULL
4 -- NULL
現在我必須使用 t3 中的公式添加一個 col。 我相信需要一個子查詢,但我在語法上苦苦掙扎。 實際上,我需要項目 (t1) id 與結束日期的特定連接的公式。
結果必須是這樣的:
ID ENDDATE FORMULA
1 -- 2021-04-10 10,80
2 -- 2021-04-10 11,25
5 -- 2021-03-28 10,00
感謝任何幫助。
如果您根據ENDDATE
分配行號,然后只取每個ID
的第一行,您可以提取多個列值。
WITH cte AS (
SELECT t1.ID, t2.ENDDATE, t3.FORMULA
, ROW_NUMBER() OVER (PARTITION BY t1.ID ORDER BY t2.ENDDATE DESC) RN
FROM t1
LEFT JOIN t3 ON t1.id = t3.t1id
LEFT JOIN t2 ON t3.t2id = t2.id
)
SELECT ID, ENDDATE, FORMULA
FROM cte
WHERE RN = 1;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.