1

我想创建一个计算多重数学公式的语句。然后转换数据。

select szallito_nev, extract(month from beerkezes_datuma) as honap,
((sum(levonas_nedvesseg_miatt)/sum(merlegelt_suly))*100) as sdf
from 2013_backup GROUP BY szallito_nev,month(beerkezes_datuma);
Company name                   month      value
A.K.S.D. VÁROSGAZDÁLKODÁSI KFT  1   1.542938202451533
A.K.S.D. VÁROSGAZDÁLKODÁSI KFT  2   2.085091455775495
A.K.S.D. VÁROSGAZDÁLKODÁSI KFT  3   3.7353360231161536
A.K.S.D. VÁROSGAZDÁLKODÁSI KFT  4   1.979149061085067

如果我这样做它运行良好,但它垂直显示摘要,我想将其转换为水平,所以我尝试了这个:

select szallito_nev,
(case extract(month from beerkezes_datuma) when '1' then ((sum(levonas_nedvesseg_miatt)/sum(merlegelt_suly))*100)   else 0 end) as 'H1'
from 2013_backup group by szallito_nev with rollup
company name                         Januar
A.K.S.D. VÁROSGAZDÁLKODÁSI KFT         0
A.S.A. MAGYARORSZÁG KFT.               0
ASCO HUNGARIA KFT                      0

但在此之后我得到了不同的结果。

4

2 回答 2

1

我会告诉你一个想法 -

SELECT
  szallito_nev,
  SUM(IF(month = 1, VALUE, NULL)) Jan,
  SUM(IF(month = 2, VALUE, NULL)) Feb,
  SUM(IF(month = 3, VALUE, NULL)) Mar,
  SUM(IF(month = 4, VALUE, NULL)) Apr
FROM
  -- this is a place for your subquery
  (SELECT szallito_nev...) t
GROUP BY
  szallito_nev
于 2013-11-06T07:45:49.160 回答
0
SELECT
  sz_nev,
  IF( datum = 1, ossz, NULL) Jan

from (
    (select szallito_nev as sz_nev from hamburger) a,
    (select extract(month from beerkezes_datuma) as datum from hamburger) b,
    (select ((sum(levonas_nedvesseg_miatt)/sum(merlegelt_suly))*100) as ossz FROM hamburger) c
   )
group by sz_nev with rollup 

我会尝试这个,但它永远不会在执行中运行并且从未完成:S 这种方式有那么慢吗?或者应该是什么问题?

于 2013-11-06T09:44:52.177 回答