0

我正在使用 构建一个文件,该文件SSMS将作为机器学习程序的输入。输出文件将是SQL Server 2008 R2 Express数据库中多个表的查询结果。

查询会产生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.00应得的NULL值。

我想看到的:

 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

只需将新列的表达式添加到 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 回答
1

您可以添加一个存储过程以根据另一个行值分配一个值。但这是在数据库方面,不知道这是不是你想要的。

于 2012-09-17T18:04:45.343 回答
1

列应该是三态的:NULL、0.00、其他survRRNAperRRNA

您可以在这些新列中使用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 回答