Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.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 基于值列创建间隔变量_Sql_Sql Server_Intervals - Fatal编程技术网

Sql 基于值列创建间隔变量

Sql 基于值列创建间隔变量,sql,sql-server,intervals,Sql,Sql Server,Intervals,我在MS SQL Server工作。我有一个数据集,其子集如下所示: id;tax cvw;8525 jhf;9958 dsf;10843 dsd;12001 xyz;12999 dgs;13586 das;14001 fsa;16428 现在,我想用tax列中的值替换(或者创建一个新列,无论哪种方式都可以)tax列中的一些值,但是每个大于9999的值都以1000的增量放置在一个间隔中。所以它看起来是这样的: id;tax;tax_replaced cvw;8525;8525 jhf;9958

我在MS SQL Server工作。我有一个数据集,其子集如下所示:

id;tax
cvw;8525
jhf;9958
dsf;10843
dsd;12001
xyz;12999
dgs;13586
das;14001
fsa;16428
现在,我想用tax列中的值替换(或者创建一个新列,无论哪种方式都可以)tax列中的一些值,但是每个大于9999的值都以1000的增量放置在一个间隔中。所以它看起来是这样的:

id;tax;tax_replaced
cvw;8525;8525
jhf;9958;9958
dsf;10843;10000
dsd;12001;12000
xyz;12999;12000
dgs;13586;13000
das;14001;14000
fsa;16428;16000
我试图找到一种简单的方法来编写代码,但到目前为止失败了。我曾想过在一个包含2列的临时表中创建间隔,并从中派生出列“tax_replacement”,但我找不到一种方法。欢迎提出任何建议

致以最良好的祝愿,
/T.

最简单的方法可能是计算你的值减去模返回值

DECLARE @val INT = 16428

select @val - (@val%1000)
要将其放入代码中,请执行以下操作:

SELECT *, 
CASE WHEN tax >= 10000 THEN tax - (tax%1000) ELSE tax END AS tax_replaced

您似乎希望在此处使用
case
表达式:

select *, (case when tax > 9999 
                then floor(tax / 1000) * 1000
                else tax
            end) as tax_replaced
from table t;
您还可以使用
%
运算符:

select *, (case when tax > 9999 
                then tax - (tax % 10000)
                else tax
           end) as tax_replaced
from table t;

如果
税小于或等于10000,则保持其原样,否则将其替换为
下限(税/1000)*1000

UPDATE elbat
       SET tax = floor(tax / 1000) * 1000
       WHERE tax > 10000;

这对于12001不太正确,它将返回1而不是12000。看起来OP希望从返回集中的税值中删除模余数。您好,这是正确的!我发现到目前为止,所有3个答案都非常有效。多棒的社区啊!非常感谢。:)谢谢!它工作得很好,我实际上不需要创建一个单独的变量来帮助完成任务的其余部分。:)