当前位置:  开发笔记 > 数据库 > 正文

将Temp列的结果加入表SQL Server

如何解决《将Temp列的结果加入表SQLServer》经验,为你挑选了1个好方法。

我正在使用SQL Server来创建我的数据库.

我想在我的表中添加一列来计算每行中NULL值的数量,如下所示:

Column1 | Column2 | Column3 | Score
a       |   B     |   C     |   0
x       |   NULL  |   NULL  |   2

目前,我有这个:

Column1 | Column2 | Column3
a       |   B     |   C     
x       |   NULL  |   NULL  

我创建了一个名为Score的新列,为了计算它,我使用了:

SELECT
CASE WHEN Column1 IS NULL THEN 1 ELSE 0 END + 
CASE WHEN Column2 IS NULL THEN 1 ELSE 0 END +
CASE WHEN Column3 IS NULL THEN 1 ELSE 0 END 
As TMP
FROM MyTable

这将返回一个包含我所有行的列和每行的分数:

  |TMP
1 |0
2 |2

我想使用这些值更新myTable中的列分数.

谢谢你的帮助.



1> marmarta..:

您可以使用计算列 - 一个始终使用给定表达式计算的虚拟列,而不是存储在磁盘上.这样,您可以避免数据一致性问题.语法很简单:

CREATE TABLE myTab
(
    column1 datatype
  , column2 datatype
...
  , Score AS CASE WHEN Column1 IS NULL THEN 1 ELSE 0 END +
       CASE WHEN Column2 IS NULL THEN 1 ELSE 0 END +
       CASE WHEN Column3 IS NULL THEN 1 ELSE 0 END 
);

要更改现有表并添加此类列,请使用:

 ALTER TABLE myTab ADD Score AS CASE WHEN Column1 IS NULL THEN 1 ELSE 0 END +
       CASE WHEN Column2 IS NULL THEN 1 ELSE 0 END +
       CASE WHEN Column3 IS NULL THEN 1 ELSE 0 END 

资料来源:https://msdn.microsoft.com/en-us/library/ms188300.aspx

推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有