我正在使用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.00
则为NULL
{1}}值。
我想看到的内容:
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
... ... ... ... ...
有关如何执行此操作的任何建议吗?
答案 0 :(得分:1)
您可以添加商店过程以根据其他行值分配值。但这是在数据库方面,不知道这是否是你想要的。
答案 1 :(得分:1)
列survRRNA
和perRRNA
应该是三态:NULL,0.00,其他。
您可以在CASE
中使用SELECT
语句来获取这些新列:
CASE
WHEN surveyResponseRate IS NULL then 1
WHEN surveyResponseRate = 0.00 then 0
ELSE -1
END as 'survRRNA'
答案 2 :(得分: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 ...