使用支持Oracle、SQL Server、IBM、MySQL、Sybase、Informix、PostgreSQL和ANSI SQL方言的平台。
我需要能够按年和月分组客户销售。所需的日期格式为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"发布于 2020-06-23 18:32:32
如果数据类型是字符串,则可以使用:
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);要获取一列中的值,可以使用format()
SELECT FORMAT(datecol, '%Y-%m') as yyyymm或extract()
SELECT EXTRACT(year_month from datecol) as yyyymm发布于 2020-06-23 19:38:21
如果datecol的数据类型是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');而且,你也不需要明确地做“截然不同”的事情。“'Group”操作会处理它。
https://stackoverflow.com/questions/62532669
复制相似问题