これは、この質問の目的のために単純化しすぎていINVENTORY
ますが、次の列を持つテーブルがあるとします: SKU
、DATE
、QUANTITY
。前日のがどの日QUANTITY
の よりも少ないすべての列を選択したいと考えています。同じテーブルにサブをQUANTITY
持つクエリをどのように作成しますか?SELECT
SELECT
または、この種のクエリを何と呼ぶかを誰かが知っている場合は、自分でさらに調査を行うことができます。(つまり、これは再帰クエリですか?)
これは、この質問の目的のために単純化しすぎていINVENTORY
ますが、次の列を持つテーブルがあるとします: SKU
、DATE
、QUANTITY
。前日のがどの日QUANTITY
の よりも少ないすべての列を選択したいと考えています。同じテーブルにサブをQUANTITY
持つクエリをどのように作成しますか?SELECT
SELECT
または、この種のクエリを何と呼ぶかを誰かが知っている場合は、自分でさらに調査を行うことができます。(つまり、これは再帰クエリですか?)
これはあなたにとって良いスタートだと思います (あなたのスキーマを正しく理解していれば)。
英語では、これにより、昨日の数量が同じ 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
)
この種のことのために、テーブルをそれ自体に結合できます。正確な構文はおそらく日付の計算には適していません。1 日に複数のレコードがある場合は、グループ化を実行する必要があるかもしれませんが、理解していただければ幸いです。
SELECT i1.*
FROM INVENTORY AS i1
JOIN INVENTORY AS i2 ON i2.DATE = i1.DATE + 1
WHERE i1.QUANTITY > i2.QUANTITY