我创建了这个SQL查询:
select "Období", sum(Cena),"Skupina zboží", "Zkratka skupiny", "Firma"
from
(select CASE when fav.VATDate<DATEADD(month, -3, GETDATE()) and fav.VATDate>=DATEADD(month, -6, GETDATE()) then '3 až 6 měsíc zpětně'
when fav.VATDate>=DATEADD(month, -3,GETDATE()) then '3 měsíce zpětně'
END "Období"
,pro.Ce_Jedn * pro.Mnoz "Cena"
,zbo.SkZ "Skupina zboží"
,CASE WHEN charindex('-', zbo.skz) > 0 then substring(zbo.SkZ, 0, charindex('-', zbo.skz))
else zbo.SKZ
END "Zkratka skupiny"
,baz.fir "Firma"
from PRODEJ pro
inner join FAKTVYDA fav on fav.Ci=pro.C_Fak and fav.Rada=pro.R_Fak
inner join ZBOZI zbo on zbo.Cis=pro.C_Zbo
left join ZAKAZKA zak on zak.Ci=pro.Ci and zak.Rada=pro.Rada
left join ZAKAZNIK baz on baz.cdo=fav.cdo
where pro.datp > -2 and fav.VATDate>=DATEADD(month, -6, GETDATE())) tab
group by
"Období","Skupina zboží", "Zkratka skupiny", "Firma"
此查询的结果如下: Result http://img844.imageshack.us/img844/9903/s1q6.png
现在我需要再添加一列,其中“3až6měsícůzpětně”和“3měsícezpětně”之间的百分比增加。这有什么方法可以实现这个目标吗?
编辑 这可能有助于更好的想象
答案 0 :(得分:1)
好的,即使你仍然没有真正向我们展示你想要的结果(你的照片上增加百分比的列在哪里?),我相信这就是你需要的:
SELECT [Zkratka skupiny],
[Skupina zboží],
[Firma],
[3 až 6 měsíc zpětně],
[3 měsíce zpětně],
([3 až 6 měsíc zpětně]/NULLIF([3 měsíce zpětně],0) - 1)
*100 [Percent Increase]
FROM ( SELECT SUM(CASE
WHEN fav.VATDate < DATEADD(MONTH,-3,GETDATE())
AND fav.VATDate >= DATEADD(MONTH, -6, GETDATE())
THEN pro.Ce_Jedn * pro.Mnoz
END) [3 až 6 měsíc zpětně],
SUM(CASE
WHEN fav.VATDate >= DATEADD(MONTH, -3,GETDATE())
THEN pro.Ce_Jedn * pro.Mnoz
END) [3 měsíce zpětně],
zbo.SkZ [Skupina zboží],
CASE
WHEN CHARINDEX('-', zbo.skz) > 0
THEN SUBSTRING(zbo.SkZ, 0, CHARINDEX('-', zbo.skz))
ELSE zbo.SKZ
END [Zkratka skupiny],
baz.fir [Firma]
FROM PRODEJ pro
INNER JOIN FAKTVYDA fav
ON fav.Ci=pro.C_Fak AND fav.Rada=pro.R_Fak
INNER JOIN ZBOZI zbo
ON zbo.Cis=pro.C_Zbo
LEFT JOIN ZAKAZKA zak
ON zak.Ci=pro.Ci AND zak.Rada=pro.Rada
LEFT JOIN ZAKAZNIK baz
ON baz.cdo=fav.cdo
WHERE pro.datp > -2
AND fav.VATDate >= DATEADD(MONTH,-6, GETDATE())
GROUP BY zbo.SkZ,
CASE
WHEN CHARINDEX('-', zbo.skz) > 0
THEN SUBSTRING(zbo.SkZ, 0, CHARINDEX('-', zbo.skz))
ELSE zbo.SKZ
END,
baz.fir) tab