使用支持Oracle,SQL Server,IBM DB2,MySQL,Sybase,Informix,PostgreSQL和ANSI SQL Dialects的平台。
我需要能够分组客户销售按年和月。 所需的日期格式为YYYY-MM,例如2019-06。 当前格式为YYYY-MM-DD HH:MI:SS。
以下是我目前所掌握的情况。 我试过很多不同的事情,但都无法如愿工作。
SELECT DISTINCT "Customer Name",
ROUND(SUM("Price Ex"), 2) AS 'Sales'
FROM "ZOHO-0006 Invoice Lines"
GROUP BY "Customer Name"
如果数据类型是字符串,则可以使用:
SELECT LEFT(datecol, 7) as yyyymm, ROUND(SUM("Price Ex"), 2) AS Sales
FROM "ZOHO-0006 Invoice Lines"
GROUP BY LEFT(datecol, 7);
如果值存储为日期/时间数据类型,请使用日期函数,例如:
SELECT YEAR(datecol), MONTH(datecol), ROUND(SUM("Price Ex"), 2) AS Sales
FROM "ZOHO-0006 Invoice Lines"
GROUP BY YEAR(datecol), MONTH(datecol);
如果datecol的datatype为timestamp,则可以尝试如下操作:
SELECT
TO_CHAR(datecol,'YYYY-MM'),
ROUND(SUM("Price Ex"), 2) AS Sales
FROM "ZOHO-0006 Invoice Lines"
GROUP BY TO_CHAR(datecol,'YYYY-MM');
或者,如果以文本/varchar2格式存储:
SELECT
TO_CHAR(TO_DATE(datecol,'YYYY-MM-DD HH:MI:SS'),'YYYY-MM'),
ROUND(SUM("Price Ex"), 2) AS Sales
FROM "ZOHO-0006 Invoice Lines"
GROUP BY TO_CHAR(datecol,'YYYY-MM');
此外,你不需要明确地做'distinction'。 “GROUP BY”操作会处理它。