1

数学的な計算を行う3つのテキスト列を持つテーブルがあります。表は次のようになります。

Date        Column1    Column2    Column3
-----------------------------------------
2012-08-01  STABLE     NEG        STABLE
2012-08-02  NEG        NEG        STABLE
2012-08-03  STABLE     STABLE     STABLE

達成したいのは

  • 2/3列が「STABLE」に等しい場合、最初の行にあるように、66%、つまり2/3を返します。
  • 1/3列が「STABLE」と等しい場合、2行目と同様に、33%、つまり1/3を返します。
  • 3/3列が「STABLE」と等しい場合、3行目と同様に、100%、つまり3/3を返します。

SQLを使用してこれを実現する方法を知りたいですか?私は現在、MSSQL Server2008R2に取り組んでいます。

私の質問が十分に明確であることを願っています。

4

2 に答える 2

3

だから、このようなもの?

select 
   ((case when col1 = 'Stable' then 1.0 else 0.0 end) + 
   (case when col2 = 'Stable' then 1.0 else 0.0 end) + 
   (case when col3 = 'Stable' then 1.0 else 0.0 end)) / 3.0
from yourtable

出力に対していくつかのフォーマットを行うことができますが、探しているものに非常に近いはずです。

于 2012-08-10T00:31:00.900 に答える
0

これらが列値の唯一の選択肢である場合:

select ( Len( Column1 ) + Len( Column2 ) + Len( Column3 ) - 9 ) / 3 / 3.0 * 100.0 as 'Percent'
  from Foo

オプティマイザーは、一定の折り畳みを処理する必要があります。それらは明確にするために示されています。

神曲は、このようなコードを書く人々のための場所を説明しています。

于 2012-08-10T04:05:56.520 に答える