0

SSMSを使用して、機械学習プログラムへの入力となるファイルを作成しています。SQL Server 2008 R2 Express出力ファイルは、 DB 内のいくつかのテーブルのクエリの結果になります。

クエリの結果、NULL一部のセルの値が返されます。現在、値がある場合ISNULL()に挿入する関数を使用していますが、実際には一部の値があり、これにより計算が歪むため、これは一時的な測定値にすぎません。'0.00'NULL'0.00'

生データはどのようになりますか:

  id        surveyResponseRate      personResponseRate
 001            .068                      .15
 002            0.00                     NULL
 003            .014                      .03
 004            NULL                      .20
 005            .068                     0.00
 ...             ...                      ...

現在のプロセスが作成するもの:

 id        surveyResponseRate      personResponseRate
 001            .068                      .15
 002            0.00                     0.00
 003            .014                      .03
 004            0.00                      .20
 005            .068                     0.00
 ...             ...                      ...

0値が実際に値であるかどうか、実際に値が原因であるかどうか0.00というバイナリ1列を作成する方法があるかどうか知りたいです。0.00NULL

私が見たいもの:

 id        surveyResponseRate      personResponseRate  survRRNA      perRRNA
 001            .068                      .15              0            0
 002            0.00                     0.00              0            1
 003            .014                      .03              0            0
 004            0.00                      .20              1            0
 005            .068                     0.00              0            0
 ...             ...                      ...             ...          ...

これを行う方法について何か提案はありますか?

4

3 に答える 3

1

ストアプロシージャを追加して、別の行値に基づいて値を割り当てることができます。しかし、これはデータベース側にあります。これが必要かどうかはわかりません。

于 2012-09-17T18:04:45.343 に答える
1

survRRNAperRRNAはトライステートである必要があります:NULL、0.00、その他。

これを実現するために、これらの新しい列のCASEステートメントを使用できます。SELECT

CASE 
    WHEN surveyResponseRate IS NULL then 1
    WHEN surveyResponseRate = 0.00 then 0
    ELSE -1
END as 'survRRNA'
于 2012-09-17T18:05:20.663 に答える
1

次のように、新しい列の式をSELECT句に追加するだけです。

SELECT
  id,
  ISNULL(surveyResponseRate, 0) AS surveyResponseRate,
  ISNULL(personResponseRate, 0) AS personResponseRate,
  CASE WHEN surveyResponseRate IS NULL THEN 1 ELSE 0 END AS survRRNA,
  CASE WHEN personResponseRate IS NULL THEN 1 ELSE 0 END AS perRRNA
FROM ...
于 2012-09-17T18:07:23.317 に答える