[英]Change value of a row and add a total row in SQL
For performance reasons, I have to adapt some of my SQL queries.出于性能原因,我必须调整一些 SQL 查询。 Here's my query and its result:这是我的查询及其结果:
SELECT
CODACT,
SUM(CASE WHEN etasup = 10 THEN CUMCOL END) AS aprep,
SUM(CASE WHEN etasup = 20 THEN CUMCOL END) AS encours,
SUM(CASE WHEN etasup > 20 THEN CUMCOL END) AS prepares,
SUM(CUMCOL) AS total
FROM
FGE50NEUV1.GESUPE
WHERE
TYPSUP = '1'
AND (DATLIV >= ` + date(0) +`
AND DATLIV <= ` + date(addDays) + `)
GROUP BY
CODACT
Result:结果:
[
{
CODACT: 'AUA',
APREP: 6503,
ENCOURS: 244,
PREPARES: 30180,
TOTAL: 36927
},
{
CODACT: 'AUF',
APREP: null,
ENCOURS: null,
PREPARES: 73,
TOTAL: 73
},
{
CODACT: 'LID',
APREP: 12597,
ENCOURS: 128,
PREPARES: 21556,
TOTAL: 34281
},
{
CODACT: 'MAT',
APREP: 410,
ENCOURS: null,
PREPARES: 5059,
TOTAL: 5469
}
]
I would like to merge the two rows "AUA" and "AUF" and change the merged row name to "Auchan", and then add a row with CODACT "TOTAL" which contains all the SUM of previous values我想合并两行“AUA”和“AUF”并将合并的行名称更改为“Auchan”,然后添加一个包含 CODACT“TOTAL”的行,其中包含所有先前值的总和
First problem is easy - replace CODACT
with case when CODACT in ('AUA', 'AUF') then 'Auchan' else CODACT end
, both in SELECT
(you need to add alias as CODACT
there) and GROUP BY
parts.第一个问题很简单 - 将CODACT
替换为case when CODACT in ('AUA', 'AUF') then 'Auchan' else CODACT end
,两者都在SELECT
(你需要在那里添加别名as CODACT
)和GROUP BY
部分。
Second part (add row with total) is most easily solved by CTE:第二部分(添加总计行)最容易通过 CTE 解决:
with CTE as (SELECT
CODACT,
SUM(CASE WHEN etasup = 10 THEN CUMCOL END) AS aprep,
SUM(CASE WHEN etasup = 20 THEN CUMCOL END) AS encours,
SUM(CASE WHEN etasup > 20 THEN CUMCOL END) AS prepares,
SUM(CUMCOL) AS total
FROM
FGE50NEUV1.GESUPE
WHERE
TYPSUP = '1'
AND (DATLIV >= ` + date(0) +`
AND DATLIV <= ` + date(addDays) + `)
GROUP BY
CODACT
)
select CODACT, aprep, encours, prepares, total
from CTE
union all
select 'TOTAL', sum(aprep), sum(encours), sum(prepares), sum(total)
from CTE
You can combine both these improvements.您可以将这两种改进结合起来。 I didn't check syntax, sorry:)我没有检查语法,抱歉:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.