我们说我有一张桌子,产品。这包含几个具有不同vatpercentages和vatprices的产品:
ArticleId | Price | VatPercentage | VatPrice
(integer) (numeric) (varchar) (numeric)
--------------------------------------------
1 100 25.0000000000 25
2 80 25.0000000000 20
3 50 8.0000000000 4
4 70 8.0000000000 5.6
5 20 0 0
0
现在我需要使用Group_concat构建字符串,并使用vatpercentage来定价,其中VatPrice不为0且价格不为0.
在这种情况下我想要的结果:
{a}25{b}45 SEK{c}{a}8{b}9.6 SEK{c}
我试过的代码:
select
group_concat('{a}' ||
CAST(VatPercentage as integer) ||
'{b}' || SUM(VatPrice) ||
' SEK' || '{c}','')
FROM Product
group by VatPercentage
having Count(Price) > 0
感谢正手
答案 0 :(得分:1)
在子查询中执行常规连接,然后在外部查询中使用GROUP_CONCAT
,因为您不能在参数中使用一个聚合函数。
SELECT GROUP_CONCAT(Result, '|') Results
FROM (
SELECT 'VatPercentage:' || CAST(VatPercentage AS INTEGER) || '% VatPrice: '
|| SUM(VatPrice) Result
FROM Product
WHERE VatPercentage != '0'
GROUP BY VatPercentage) x
您也不需要HAVING
条款。这只会排除所有Price
值为NULL
的结果。但是您的示例结果是跳过VatPercentage
为零的行,因此我将其放在WHERE
子句中。