我同意@JNK的評論,你最好用VIEW
。對於SQL Server 2005 +,你可以嘗試:
CREATE VIEW LowPrices
AS
SELECT A.store, A.item, A.price, A.Low_Price, MIN(B.store) Low_Price_Store
FROM ( SELECT *, MIN(price) OVER(PARTITION BY item) Low_Price
FROM YourTable) A
JOIN YourTable B
ON A.Low_Price = B.price
GROUP BY A.store, A.item, A.price, A.Low_Price
如果你還想做UPDATE
,然後嘗試:
WITH CTE AS
(
SELECT A.store, A.item, A.price, A.Low_Price, MIN(B.store) Low_Price_Store
FROM ( SELECT *, MIN(price) OVER(PARTITION BY item) Low_Price
FROM YourTable) A
JOIN YourTable B
ON A.Low_Price = B.price
GROUP BY A.store, A.item, A.price, A.Low_Price
)
UPDATE A
SET A.LowPrice = B.Low_Price,
A.LowPriceStore = B.Low_Price_Store
FROM YourTable A
JOIN CTE B
ON A.store = B.Store AND A.item = B.item
什麼版本的SQL Server您使用的是? – Lamak 2011-04-11 20:25:58
這是一個可怕的***數據結構。當價格發生變化時,您是否要檢查該表中的每條記錄並更新該項目所有實例的低價格?與lowprice_Store一樣,您是否要驗證每次插入/更新/刪除後運行?這會導致你很多頭痛...... – JNK 2011-04-11 20:31:36
你最好把它放在一個視圖中,而不是改變你的這個信息的基礎表。 – JNK 2011-04-11 20:37:06