使用SQL While循环遍历列表
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用SQL While循环遍历列表相关的知识,希望对你有一定的参考价值。
我编写了一个SQL查询,它连接两个表并计算两个变量之间的差异。我想要一个while循环遍历代码并执行组织列表orgnr
的过程。
Use Intra;
drop table #Tabell1
go
select Månad = A.Manad, Intrastat = A.varde, Moms = B.vardeutf
into #Tabell1
From
IntrastatFsum A
join
Momsuppg B
on A.Orgnr = B.Orgnr
where A.Orgnr = 165564845492
AND A.Ar = 2017
AND B.Ar = A.AR
--AND A.Manad = 11
AND A.Manad = B.Manad
AND A.InfUtf = 'U'
order by A.Manad
select *, Differens = (Intrastat - Moms)/ Moms from #Tabell1
我在哪里放置while循环,我该怎么写呢?我没有很多SQL经验,所以感谢任何帮助。
在发布这个问题的时候一点也不清楚,所以很抱歉。但我想要做的是:这段代码只运行一些数据,计算一个特殊公司的差异%。每个月我们都会得到一些公司列表,这些公司对某些变量显示出高标准差。所以我们必须仔细检查并将报告的价值与税收回报进行比较。我想要做的是编写一个代码,比较报告值“Intra”和报告税值的“Moms”的值。那部分我已经完成了我现在需要做的就是在代码中插入一个循环,通过列表而不是我为某些变量显示高std的公司存储了orgnr。我希望它保留一个列表报告价值和税收回报之间的差异很大的公司,所以我可以多看看它们。因为有时税收回报和报告的价值几乎相同,所以我尝试用自动化删除最明显的案例
答案
我认为您的查询中不需要循环。
尝试更改where where子句:
where A.Orgnr = 165564845492
对此:
where A.Orgnr in (165564845492, 123, 456, 678)
另一答案
只需在where子句中删除A.Orgnr = 165564845492,就不需要循环了
Use Intra;
drop table #Tabell1
go
select Månad = A.Manad, Intrastat = A.varde,Moms = B.vardeutf
into #Tabell1
From
IntrastatFsum A
join
Momsuppg B
on A.Orgnr = B.Orgnr
where A.Ar = 2017
AND B.Ar = A.AR
--AND A.Manad = 11
AND A.Manad = B.Manad
AND A.InfUtf = 'U'
order by A.Manad
select *, Differens = (Intrastat - Moms)/ Moms from #Tabell1
另一答案
问题不明确(对我而言)
select Månad = A.Manad, Intrastat = A.varde, Moms = B.vardeutf
, Differens = (A.varde - B.vardeutf) / B.vardeutf
From
IntrastatFsum A
join
Momsuppg B
on A.Orgnr = B.Orgnr
AND A.Orgnr in (165564845492, ...)
AND A.Ar = 2017
AND A.Manad = B.Manad
AND A.InfUtf = 'U'
order by A.Manad
以上是关于使用SQL While循环遍历列表的主要内容,如果未能解决你的问题,请参考以下文章
在 NodeJS 中使用带有 SQL 请求的 While 循环