按子字符串分组mysql不工作

按子字符串分组mysql不工作,mysql,group-by,substring,Mysql,Group By,Substring,我想在查询中使用GROUPBY子句,以防其列类型包含[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 PA

我想在查询中使用GROUPBY子句,以防其列类型包含[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行,我所拥有的在下图中,绿色框线显示了我需要分组的内容。还有一件事,我需要对分组总数进行总结。谢谢


查询中没有聚合函数。也许你想做这样的事

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

您希望按销售额分组,但其他行保持不变。假设每行上都有一个唯一的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);

你想要什么样的结果?查询工作正常,返回类型为“[Sales]”和NULL的两行。我需要根据列类型中的值[Sale]进行分组MySQL支持在group by子句中使用列别名。明白了。我主要是一个甲骨文的人。但是,整个销售只有一行,我需要在不同的日期范围内进行不同的销售,比如说,如果只在9月19日进行销售。然后其他事情,如库存,然后在9月23日再次进行销售……我将应付日添加到组中,这应该可以解决这个问题。谢谢,伙计,它显示了两行,甚至有一秒的时间差,但我用日期格式的东西做到了。谢谢它奏效了: