使用SQL While循环遍历列表

问题描述 投票:0回答:3

我编写了一个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。我希望它保留一个列表报告价值和税收回报之间的差异很大的公司,所以我可以多看看它们。因为有时税收回报和报告的价值几乎相同,所以我尝试用自动化删除最明显的案例

sql-server tsql while-loop
3个回答
2
投票

我认为您的查询中不需要循环。

尝试更改where where子句:

where A.Orgnr = 165564845492

对此:

where A.Orgnr in (165564845492, 123, 456, 678)

0
投票

只需在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 

0
投票

问题不明确(对我而言)

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
© www.soinside.com 2019 - 2024. All rights reserved.