0

我创建了这个 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"

这个查询的结果是这样的: 结果 http://img844.imageshack.us/img844/9903/s1q6.png

现在我需要再添加一列,其中将增加“3 až 6 měsíců zpětně”和“3 měsíce zpětně”之间的百分比。有什么办法可以做到这一点吗?

编辑这可能有助于更好地想象 第二张图片

4

1 回答 1

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
于 2013-10-24T13:52:54.323 回答