这是我的询问。
SELECT CONVERT(varchar, cast(date as datetime), 3)
FROM shoptransfer
GROUP BY year (date)
我想按日期 (
varchar
) 列的年份部分进行分组,但是出现以下错误:
列“shoptransfer.Date”在选择列表中无效,因为它未包含在聚合函数或 GROUP BY 子句中。
如何按日期列的年份部分进行分组?
怎么样:
select datepart(yyyy, [date]) as [year]
from shoptransfer
group by datepart(yyyy, [date])
或者:
select count(*) as qty, datepart(yyyy, [date]) as [year]
from shoptransfer
group by datepart(yyyy, [date])
order by [year]
这是基于OP的命令:“我想按日期(varchar)列的年份部分进行分组”
使用 MariaDB:
SELECT year(date) FROM cost GROUP BY year(date)
如果您想同时选择日期和年份,则不应使用 GROUP BY 子句,因为它将所有具有相似年份的行合并为一行。如果您想要将所有具有相似年份的日期放在一起,您可以使用 ORDER BY:
SELECT DATEPART('yyyy',date) AS Year,date
FROM shoptransfer
或
SELECT DATEPART('yyyy',date) AS Year,date
FROM shoptransfer
ORDER BY DATEPART('yyyy',date) desc
我不了解T-SQL,但在一般的SQL中,group by子句中的内容必须与select子句中的每个非聚合函数列完全匹配。尝试一下
select CONVERT(varchar,cast(date as datetime),3)
from shoptransfer
where
SUBSTRING(productcode, 5, 3) like '%' group by CONVERT(varchar,cast(date as datetime),3)
此外,
where SUBSTRING(productcode, 5, 3) like '%'
并没有过滤掉太多 - 也许可以将其删除。
您应该将列
shoptransfer.Date
添加到 group by 子句中。
select CONVERT(varchar,cast(date as datetime),3)
from shoptransfer
where
SUBSTRING(productcode, 5, 3) like '%'
group by CONVERT(varchar,cast(date as datetime),3)
group by
substring(CONVERT(varchar,comuln1,101),1,4)
年 2004年 2005年 2006