簡體   English   中英

將 Max 與來自多個表的多個列一起使用

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM