IN

IN式では、メンバーシップ・テストが実行されます。

IN式で対処できるユース・ケースとは、注目するセットを指定してから、そのセットに含まれる、または含まれない属性を持つレコードをフィルタリングするというものです。これが役に立つのは、HAVING式やPAGE式と組み合せる場合です。

IN式は、ターゲット文が指定した状態を参照している場合サポートされます。この場合のルールとして角カッコ内には式が1つのみで、これがターゲット状態の主キーに対して一致されます。式は、状態のフィルタリングされたレコード・セット(フィルタリングされていないものではなく)に対して評価されることに注意してください。

INの構文

ターゲットが文の場合の構文は、次のとおりです。
[expr1, expr2, …] IN StatementName
ターゲットが状態の場合の構文は、次のとおりです。
[expr] IN StatementName

この状態の構文の理由は、状態には、フィルタリングするコレクション同様、常に単一キー属性があるため、それらを参照するIN式は角カッコ内に式を1つのみ含む必要があるということです。

セットはIN式でサポートされることに注意してください。指定したいずれかの文のグループ・キーが設定されている場合、角カッコ内の対応する式は同じ型のセットである必要があります。

INの例

次に示す例は、「売上額上位の顧客が購入するのはどの製品か」や「自分が購入した高額商品のメーカーからは、合計でいくら購入したか」という疑問の答えを見つけるのに役立ちます。
DEFINE HighValueCust AS SELECT
  SUM(SalesAmount) AS Value
FROM SaleState
GROUP BY CustId
HAVING Value>10000 ;

RETURN Top_HVC_Products AS SELECT
  COUNT(1) AS NumSales
FROM SaleState
WHERE [CustId] IN HighValueCust
GROUP BY ProductName
ORDER BY NumSales DESC
PAGE(0,10)