4

これは、この質問の目的のために単純化しすぎていINVENTORYますが、次の列を持つテーブルがあるとします: SKUDATEQUANTITY。前日のがどの日QUANTITYの よりも少ないすべての列を選択したいと考えています。同じテーブルにサブをQUANTITY持つクエリをどのように作成しますか?SELECTSELECT

または、この種のクエリを何と呼ぶか​​を誰かが知っている場合は、自分でさらに調査を行うことができます。(つまり、これは再帰クエリですか?)

4

2 に答える 2

2

これはあなたにとって良いスタートだと思います (あなたのスキーマを正しく理解していれば)。
英語では、これにより、昨日の数量が同じ SKU の前日のすべての最小数量よりも少ないすべての SKU が選択されます。

SELECT 
    SKU, 
    Quantity

FROM 
    INVENTORY inv

WHERE
    inv.DATE = GETDATE() - 1
    AND inv.QUANTITY < (SELECT MIN(prev_inv.QUANTITY) 
                        FROM INVENTORY prev_inv
                        WHERE 
                            prev_inv.DATE < GETDATE() - 1 
                            AND prev_inv.SKU = inv.SKU
                       )
于 2012-05-23T01:52:51.270 に答える
1

この種のことのために、テーブルをそれ自体に結合できます。正確な構文はおそらく日付の計算には適していません。1 日に複数のレコードがある場合は、グループ化を実行する必要があるかもしれませんが、理解していただければ幸いです。

SELECT i1.*
FROM INVENTORY AS i1
JOIN INVENTORY AS i2 ON i2.DATE = i1.DATE + 1
WHERE i1.QUANTITY > i2.QUANTITY
于 2012-05-23T02:05:41.687 に答える