Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 基于文本列的SQL数学计算_Sql Server - Fatal编程技术网

Sql server 基于文本列的SQL数学计算

Sql server 基于文本列的SQL数学计算,sql-server,Sql Server,我有一个有3个文本列的表格,我想在上面做一些数学计算。 下表如下所示: Date Column1 Column2 Column3 ----------------------------------------- 2012-08-01 STABLE NEG STABLE 2012-08-02 NEG NEG STABLE 2012-08-03 STABLE STABLE STABLE 我想要实现的

我有一个有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列等于“稳定”,则返回66%,即2/3,与第一行相同
  • 如果1/3列等于“稳定”,则返回33%,即1/3,与第二行相同
  • 如果3/3列等于“稳定”,则返回100%,即3/3,与第三行相同
我想知道如何使用SQL实现这一点?我目前正在MSSQL Server 2008 R2上工作


我希望我的问题足够清楚。

那么,像这样的问题

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

您可以对输出进行一些格式化,但应该非常接近您要查找的内容

如果这些是列值的唯一选择:

select ( Len( Column1 ) + Len( Column2 ) + Len( Column3 ) - 9 ) / 3 / 3.0 * 100.0 as 'Percent'
  from Foo
优化器应该处理不断的折叠。为了清晰起见,显示了这些参数


描述这样编写代码的人的位置。

此表是否有主键?还有,你关心性能吗?是的,它的主键是日期字段。我会试试看,让你看看know@RThomas将
/3
设置为
/3.0
以获取百分比。这是一个感谢,它现在起作用了。我想知道是否有其他方法可以实现这一点。看看这些查询可用的选项。计算列怎么样?是的,没关系。但我说的是查询智能,我们是否还有其他方法可以做到这一点?