2013-10-24 4 views
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" 

и результат этого запроса является чем-то вроде этого: Result http://img844.imageshack.us/img844/9903/s1q6.png

Теперь мне нужно добавить еще один столбец, в котором будет процентное увеличение между «3 až 6 měsíců zpětně» и «3 měsíce zpětně». Как я могу достичь этого?

редактировать Это может быть, поможет лучше представить себе для Second image

+0

В какой колонке вы делаете процентное увеличение расчета? Столбец 2 (Нет названия столбца)? –

+0

Да, columnt 2 (нет столбца имен). Каждая фирма в колонке «Фирма» имеет номер для «3 až 6 měsíců zpětně» и «3 měsíce zpětně», и мне нужно получить процентное увеличение (или уменьшение) между ними. – Sk1X1

+0

Послушайте, это тот самый вопрос, который вы задали вчера. Проблема в том, что у вас нет значений для '3 až 6 měsíců zpětně' и' 3 měsíce zpětně' на разных столбцах (даже если вы позже представите их в инструменте отчетности, который делает это). Эта колонка имеет смысл там, или если вы уже вычислили набор данных так же, как – Lamak

ответ

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 
Смежные вопросы