我有一個像這樣的事實表“定價”:
| 串行 | Main_Category | Group_Category | 子類別 | 物品 | 地點 | 價格 |
|---|---|---|---|---|---|---|
| 1 | 衣服 | 男士 | T 恤 | T 恤 1 | 商店 1 | 100 |
| 2 | 衣服 | 男士 | T 恤 | T 恤 1 | 全部 | 25 |
| 3 | 設備 | 電視 | 智能電視 | 智能電視 1 | 商店 1 | 50 |
| 4 | 設備 | 電視 | 智能電視 | 全部 | 商店 1 | 75 |
您可以注意到,并非所有專案都明確定義,如果未提及該專案,則它應該在“全部”中可用。
“全部”可以在除價格之外的任何列中找到
另一個維度表“銷售”是這樣的:
| 串行 | Main_Category | Group_Category | 子類別 | 物品 | 地點 |
|---|---|---|---|---|---|
| 1 | 衣服 | 男士 | T 恤 | T 恤 1 | 商店 1 |
| 2 | 衣服 | 男士 | T 恤 | T 恤 1 | 3號店 |
| 3 | 設備 | 電視 | 智能電視 | 智能電視 3 | 商店 1 |
| 4 | 設備 | 電視 | 智能電視 | 智能電視 1 | 商店 1 |
我想將定價表中的價格添加到銷售表中,而不為每個組合使用連接
例外輸出:
| 串行 | Main_Category | Group_Category | 子類別 | 物品 | 地點 | 價格 |
|---|---|---|---|---|---|---|
| 1 | 衣服 | 男士 | T 恤 | T 恤 1 | 商店 1 | 100 |
| 2 | 衣服 | 男士 | T 恤 | T 恤 1 | 3號店 | 25 |
| 3 | 設備 | 電視 | 智能電視 | 智能電視 3 | 商店 1 | 75 |
| 4 | 設備 | 電視 | 智能電視 | 智能電視 1 | 商店 1 | 50 |
更新: “全部”可以在不止一列中找到
uj5u.com熱心網友回復:
你可以做
select *
from (
select s.*, p.Price, row_number() over(partition by s.Main_Category, .., s.Location order by p.Serial) rn
from Sales s
join Pricing p on
(s.Main_Category = p.Main_Category or p.Main_Category ='All')
and ..
and (s.Location = p.Location or p.Location ='All')
) t
where rn = 1;
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/425852.html
上一篇:將sp_executesql的輸出放入表列(SQLSERVER)時出現問題
下一篇:檢查NULL并連接字串的函式
