私は現在、文字コード( 'AAA'や 'XYZ'など)に基づいてテーブルを返すストアドプロシージャを作成しています。各行には文字コードがあり、それらはすべて同じ列の 'コード'の一部です。ここでは私が探しているアルゴリズムの一種です:SQL - 同じ列の他の値の存在に応じて、テーブル内の変数を値に設定する最も効率的な方法は?
If 'XXX' exists in the table, @variable = 'XXX' --(XXX trumps all other codes)
Else if 'YYY' exists in the table, @variable = 'YYY' --(If there's no XXX, pick YYY)
(list continues on...)
Else, @variable = ''
これは技術的に困難ではありませんが、私のようなものを使用することを躊躇:それは食べるのと同じようクエリが見えますので、
SET @variable = CASE WHEN (SELECT TOP 1 Code FROM dbo.Table WHERE Code = 'XXX') THEN 'XXX'
WHEN (SELECT TOP 1 Code FROM dbo.Table WHERE Code = 'YYY') THEN 'YYY'
etc...
をより低い優先度のコードに対しては本当に速いリソースが必要です。
良い方法がありますか?この形式の
サンプルデータと希望の結果を追加できますか?いくつかの種類の表を返すと言いますが、サンプルコードは変数を設定するだけです。 –
ああ、私はこれを文脈として使って、これが大きな手続きのほんの一部であることを説明しました。このサブセクションでは、実際に変数を設定しています。変数は、他のストアドプロシージャに渡されてデータなどを取得し、最終的にテーブルが生成されます。これは、この大規模な手順の最初のステップのほんの1つです。 – RBeaulieu
'CODE'と' PRIORITY'カラムを使って "PRIORITY"の値を得るための "code"テーブルを作るのはどうですか?それはSQLをもっときれいにするでしょう。 –