1

16列を返すクエリがあります。それらのうち12個は同様のデータを持っています(値0、1、または2を返します)。これらの数字を文字に置き換えたいと思います-0はL、1はM、2はHです。

私は12のケースステートメントを書くことができますが、それはやり過ぎであり、私は絶対にそれをしたくありません。代わりに、フロントエンドでこれらの値を変換したいと思います。適切な値を返す関数(クエリ自体の中でのみ)のようなものを使用する方法はありますか?

私はデータベースへの読み取り専用アクセス権を持っており、このようなデータベースはすでに何千もあるため、udfを作成できないことに注意してください。

4

2 に答える 2

1

フロントエンドで、列挙型を使用するのはどうですか?列挙型要素L=0、M = 1、H=2を持つことができます。DBから(列)データをプルするときは、それを列挙型にキャストします。表示するときに、ToStringを実行することで列挙型の名前を取得できます。このMSDN
の記事をご覧ください。

于 2012-10-11T21:01:21.747 に答える
1

読み取りアクセス権しかない場合、関数を作成することはできませんが、共通テーブル式を作成して12回結合することはできます...

WITH LookupTable (numval, returnletter) as (
    SELECT 0,'L' UNION SELECT 1,'M' UNION SELECT 2,'H')

select LKP1.returnletter as col1,
       LKP2.returnletter as col2
       ...
    from origtable OT
        inner join LookupTable LKP1 on ot.col1 = LKP1.numval
        inner join LookupTable LKP2 on ot.col2 = LKP2.numval
        ....
于 2012-10-11T21:07:18.267 に答える