我编写了一个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"这是报告的价值和"妈妈"这是报税额。那部分我已经完成了我现在需要做的就是在代码中插入一个循环,通过列表而不是我为某些变量显示高std的公司存储了orgnr。我希望它保留一个列表报告价值和税收回报之间的差异很大的公司,所以我可以多看看它们。因为有时税收回报和报告的价值几乎相同,所以我尝试用自动化删除最明显的案例
答案 0 :(得分:2)
我认为您的查询中不需要循环。
尝试更改where-clause:
where A.Orgnr = 165564845492
对此:
where A.Orgnr in (165564845492, 123, 456, 678)
答案 1 :(得分: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
答案 2 :(得分: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