1

これは簡単な質問だと思いますが、さまざまな変数を宣言して、ユーザーの選択に応じて where 句の一部になるようにするにはどうすればよいのでしょうか?

たとえば、ユーザーが選択した内容に応じてデータベース (米国、英国、オーストラリア) から抽出された国のリストを含むコンボボックスを含む Excel スプレッドシートがあり、そのデータがフィルター処理されます。問題は、クエリが値 (US、UK、AU) から結果を取得するデータ テーブルにあります。

多分私はマッピングテーブルを構築することができますか? 宣言を使用してこれを行うことができると確信しています。

これを構築するための最良の方法についてのアドバイスは大歓迎です。

4

3 に答える 3

2

あなたが求めているのは

SELECT tbl.* 
FROM tbl
WHERE col1 = CASE WHEN @param='United Kingdom' THEN 'UK' ... END

考慮したいのはルックアップテーブルです

SELECT tbl.*
FROM tbl
JOIN loc ON loc.id = tbl.loc_id
WHERE loc.name = @param
于 2013-10-23T15:07:29.063 に答える
1

最も簡単な方法: 新しいデータセットを作成し、それをどこかに (一時的な talbe などに) 保存してから、変数を宣言し、データセットをそのデータ ソースとして使用します。

           declare @Country as varchar(50)

where 句で変数を使用して、結果セットをフィルタリングします。

           Select tbl.* 
           from tbl tbl 
           where tbl.country = @Country

あなたの場合、フィルタリング中に使用したい値に基づいて、コンボボックスがどうあるべきか。そのため、次のようなものを使用できます。

select distinct tbl.country
from table tbl 

生成された結果をドロップダウンのソースとして使用します

それを行う別の方法は、CASEを使用することです

  ,case when country = 'Australia' then 'AU'
   , case when country = 'United Kingdom' then 'UK'
.....

ありがとう

于 2013-10-23T15:48:45.000 に答える