只是试图弄清楚如何编写一个T-SQL查询,该查询允许我使用其他两列中的两个值的组合来更新列值(称为range
),依次针对表中的每一行
我尝试了以下操作,但是它所做的就是将表中的顶行值作为参数,并使用相同的值(无论范围如何)更新“每”单列。
UPDATE dbo.levels
SET level_1_range = CONCAT(min_level_1, '-', max_Level_1)
我希望它看起来像这样:
date | min_level_1 | max_level_1 | level_1_range
---------+-------------+-------------+---------------
01/01/18 | 1 | 10 | 1-10
02/02/18 | 20 | 25 | 20-25
但是我的代码返回的更像是
date | min_level_1 | max_level_1 | level_1_range
---------+-------------+-------------+--------------
01/01/18 | 1 | 10 | 1-10
02/02/18 | 20 | 25 | 1-10
答案 0 :(得分:1)
在这里看不到不使用计算字段的原因。
Alter Table dbo.levels Add level_1_range_computed As CONCAT(min_level_1, '-',
max_Level_1) PERSISTED;
来自msdn:
计算列是虚拟列,除非该列标记为PERSISTED,否则它不会物理存储在表中。计算列表达式可以使用其他列中的数据来计算其所属列的值。您可以在SQL Server中为计算列指定表达式
答案 1 :(得分:0)
简单的+可以在SQL Server中使用,只要它们都是字符串。这样简单
convert(varchar,min_level_1)+'-'+convert(varchar,max_Level_1)
会做到的。