在此處輸入圖片說明
我想將余額表加入每個 UID 和 stock_name 和日期的訂單。該日期應在相同或上一個可用日期加入。
這是我的初始代碼,但如果在訂單日期期間日期不可用,它將回傳 null。
Select a.date,
a.stock_name,
a.UID,
a.Sale,
b.avg_price,
a.Sale-b.avg_price as Gain
from orders as a
left join balance as b on a.UID = b.UID and a.stock_name = b.stock_name and a.date = b.date
order by a.date desc
uj5u.com熱心網友回復:
為此,我會使用 CROSS APPLY 或 OUTER APPLY (SELECT TOP 1 ...)。嘗試:
outer apply (
select top 1 *
from balance as b
where a.UID = b.UID
and a.stock_name = b.stock_name
and a.date >= b.date
order by b.date desc
) b
這將選擇訂單日期或早于訂單日期的最接近的余額日期。如果結果 b 為空,則沒有余額記錄。OUTER APPLY 就像一個 LEFT OUTER JOIN,而 CROSS APPLY 就像一個常規的 INNER JOIN。您使用哪種取決于您更喜歡如何處理不匹配條件。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/383808.html
標籤:sql sql-server 查询语句 加入
上一篇:零連接與空安全連接中的空值
