我正在嘗試使用 SQL 中的兩個表中的計算值列印一列。我需要比較 theorder_items和orderstablea。我有以下兩個表:
Order_Items:

訂單:

預期結果。如果 order_items 表中的 order_no 有不同的品牌,它應該在 Brand 欄中顯示“多個”,如果有相同的品牌,它應該顯示品牌名稱:

uj5u.com熱心網友回復:
我們可以通過單次遍歷Order_Items表來處理這個問題:
SELECT *, CASE WHEN MIN(brand) OVER (PARTITION BY order_no) =
MAX(brand) OVER (PARTITION BY order_no)
THEN brand ELSE 'multiple' END AS label
FROM Order_Items
ORDER BY order_no;
uj5u.com熱心網友回復:
您可以使用簡單的聚合。在這種情況下,與聚合相關的子查詢可能更容易
SELECT
o.*,
oi.brand
FROM Orders o
CROSS APPLY (
SELECT brand = CASE WHEN MIN(brand) = MAX(brand)
THEN MIN(brand) ELSE 'multiple' END
FROM Order_Items oi
WHERE oi.order_no = o.order _no
) oi;
uj5u.com熱心網友回復:
如果存在 order_items,則洗掉表
創建表 order_items(order_no int,product varchar(20),product_codevarchar(20),brand varchar(20))
插入 order_items 值(1,'product 3',13,'nike') 插入 order_items 值(1,'product 1',11,'reebook') 插入 order_items 值(1,'product 2',12, 'adidas') 插入 order_items 值(2,'product 4',14,'reebook') 插入 order_items 值(2,'product 1',11,'reebook') 插入 order_items 值(2,'product 10') ',20,'reebook') 插入 order_items 值(3,'product 3',13,'nike') 插入 order_items 值(3,'product 20',10,'nike') 插入 order_items 值(4 ,'product 5',15,'adidas') 插入 order_items values(4,'product 2',12,'adidas')
如果存在訂單則洗掉表
創建表訂單 (order_no int,customer varchar(20),revenue int)
插入訂單值 (3,'customer c',100) 插入訂單值 (4,'customer a',200) 插入訂單值 (2,'customer b',300) 插入訂單值 (1,'客戶 a',400)
如果存在則洗掉表#pk
從 order_items 中選擇不同的 order_no,brand 到 #pk
如果存在則洗掉表#mb
選擇 order_no,STRING_AGG(brand,',') 作為品牌到 #mb from #pk group by order_no
select a.order_no,a.customer,a.revenue,b.brands from orders a inner join #mb b on a.order_no=b.order_no
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/479620.html
下一篇:如何洗掉資料庫表中的資料
