0

ユーザーが複数の顧客名を選択するフロントエンドに複数選択ボックスがあります。ユーザーが選択した顧客名を別のテーブルに保存し、IN 演算子を使用してこのフィルター テーブルの値を使用して、他のテーブルからレコードを取得します。ユーザーが顧客名を選択していない場合 (したがって、フィルター テーブルにレコードが保存されていない場合)、すべてのレコードを返したいと考えています。さまざまな方法で試してみましたが、正しく動作させることができません。句のusingCASEステートメントWHEREもまったく機能していないようです。

非常に単純化されたバージョンを示すために (私の実際のコードはいくつかの異なるテーブルからデータを収集します)、以下は、tmp_CustShipmentsのフィルタ リストに基づいてtable からデータを返すコードですtbl_CustSelect。ユーザーが選択を行うときに機能します。

しかし、ユーザーが何も選択しない場合、tmp_CustShipmentsテーブルからすべてのレコードを返したいと思います。どうすればこれを達成できますか?

( IF ... ELSE ...) が使用されている場合、システムは「into」セクションに別のテーブル名を期待しているように見えます。そうでない場合、SQL はテーブルが既に存在するというエラーを返します。結果セットは、後続のクエリでさらに複雑な計算の入力として使用する必要があるため、これは非常に面倒です。

SELECT a.*   
into #qry_ShipStat
FROM #tmp_CustShipments a
WHERE a.CustName IN (SELECT Cust FROM dbo.tbl_CustSelect)

できれば助けてください。どうもありがとうございました。

4

1 に答える 1