0

自己結合と集計を使用してテーブルを更新しようとしています。

たとえば、テーブルには次の列があります。

店、商品、価格、低価格、低価格店

と を入力する必要がlowpriceありlowprice storeます。

は次のlowpriceようになります。

Select item,min(price) group by item

は各アイテムlowprice storeのストアになります。min(price)

また、その一歩を踏み出せれば幸いです。2 つの店舗が同じ商品を提供しているとしlowpriceます。その場合、値はlowprice store「store a/store b」になりますが、この部分はそれほど重要ではありません。

SQL Server を使用しています。

4

1 に答える 1

3

を使用した方がよいという@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
于 2011-04-11T20:47:38.797 に答える