2

アイテムの UPC、プロパティ コード (つまり、「REGULAR_PRICE、PROMO_PRICE」)、および価格を保持する小売ソフトウェアの価格表があります。

例のテーブル:

400000320243 REGULAR_PRICE 80
400000320243 PROMO_PRICE 80
400000320250 REGULAR_PRICE 50
400000320250 PROMO_PRICE 40

任意の UPC の PROMO_PRICE = REGULAR_PRICE を検索し、この条件が成立する UPC のリストを出力するクエリを作成しようとしています。

これをSQLで記述する方法がわかりません。SQL Server 2008 R2 を使用しています。

試行された疑似コード:

for each upc:
  if upc.regular_price = upc.promo_price:
      print upc
4

5 に答える 5

1

INTERSECTクエリもここで機能します。

SELECT upc, price
FROM atable
WHERE property_code = 'REGULAR_PRICE'
INTERSECT
SELECT upc, price
FROM atable
WHERE property_code = 'PROMO_PRICE'
;

SQL Fiddle Demo (@Beth のスキーマを使用)。

于 2013-02-13T09:37:47.940 に答える
0

さらに...あなたの例から判断すると-私にはテーブルのように見えます-データを比較するためにSQLのバージョンで利用可能な場合は LAG() / LEAD() 分析関数を使用できます-前または次の行と現在の行の値.. .

于 2013-02-12T17:48:24.707 に答える
0

EXISTS サブクエリのオプション

SELECT *
FROM dbo.test3 t1
WHERE EXISTS (
              SELECT 1
              FROM dbo.test3 t2
              WHERE t2.PriceName = CASE WHEN t1.PriceName = 'PROMO_PRICE' THEN 'REGULAR_PRICE'
                                        WHEN t1.PriceName = 'REGULAR_PRICE' THEN 'PROMO_PRICE' END
                AND t1.Price = t2.Price                                                    
              )

SQLFiddle のデモ

于 2013-02-12T19:32:08.383 に答える