我想在查询中使用GROUP BY子句,如果IFF它的列TYPE包含[Sale],为此我将查询放在下面,
SELECT
PAYABLE_TYPE AS TYPE,
CASE WHEN (SUBSTRING(PAYABLE_TYPE, 1,6) = '[Sale]') THEN PAYABLE_TYPE END AS T,
PAYABLE_PARTICULAR AS PARTICULAR,
DEBIT,
CREDIT,
PAYABLE_DATE AS DATE
FROM PAYABLES
WHERE PAYABLE_DATE >= $P{DateStart} && PAYABLE_DATE <= $P{DateEnd}
GROUP BY T
但它只返回我2行,我所拥有的是下面的图像,绿色框线显示我需要分组。我需要的另一件事是将总数归类为总和。感谢
答案 0 :(得分:1)
您希望按销售进行分组,但保持其他行不变。我假设您在每一行上都有一个非负整数的唯一id
:
SELECT
PAYABLE_TYPE AS TYPE,
CASE WHEN (SUBSTRING(PAYABLE_TYPE, 1,6) = '[Sale]') THEN PAYABLE_TYPE END AS T,
max(PAYABLE_PARTICULAR) AS PARTICULAR,
sum(DEBIT) as debit,
sum(CREDIT) as credit,
PAYABLE_DATE AS DATE
FROM PAYABLES
WHERE PAYABLE_DATE >= $P{DateStart} && PAYABLE_DATE <= $P{DateEnd}
GROUP BY PAYABLE_DATE, (case WHEN (SUBSTRING(PAYABLE_TYPE, 1,6) = '[Sale]') then -1 else id end);
答案 1 :(得分:0)
查询中没有聚合函数。也许你正试图做这样的事情?
SELECT TYPE, T, PARTICULAR, DATE, SUM(DEBIT), SUM(CREDIT) FROM
(SELECT
PAYABLE_TYPE AS TYPE,
CASE WHEN (SUBSTRING(PAYABLE_TYPE, 1,6) = '[Sale]') THEN PAYABLE_TYPE END AS T,
PAYABLE_PARTICULAR AS PARTICULAR,
DEBIT,
CREDIT,
PAYABLE_DATE AS DATE
FROM PAYABLES
WHERE PAYABLE_DATE >= $P{DateStart} && PAYABLE_DATE <= $P{DateEnd})
GROUP BY TYPE, T, PARTICULAR, DATE