我正在尝试按月份和年份分组的实例。
SELECT
(MONTH(CAST(t1.some_date as DATE)) + ' ' + YEAR(CAST(t1.some_date as DATE))) as Issue_Month,
COUNT(*) as c
FROM
(sub query) t1
GROUP BY
(MONTH(CAST(t1.some_date as DATE)) + ' ' + YEAR(CAST(t1.some_date as DATE)))
错误第2行:“ +”不能应用于bigint,varchar(1)
我尝试将+
和&
交换为||
和Month Year | c
来构建所需的字符串,但是没有运气。
我如何生成如下表:
Month | Year | c
我也如何生成此表:
fs := http.FileServer(http.Dir(docRoot)) // docRoot is a config variable
for _, f := range files {
path := fmt.Sprintf("/%s", f.Name())
serveFile := func(w http.ResponseWriter, r *http.Request) {
if r.URL.Path == path || r.URL.Path == "/index.html" && path == "/" {
fs.ServeHTTP(w, r)
} else {
origHandler.ServeHTTP(w, r)
}
}
docHandler.HandleFunc(path, serveFile)
}
答案 0 :(得分:2)
您可以使用date_format()
:
SELECT
date_format(CAST(t1.some_date as DATE), '%m %Y') as Issue_Month,
COUNT(*) as c
FROM
(sub query) t1
GROUP BY
date_format(CAST(t1.some_date as DATE), '%m %Y')
答案 1 :(得分:0)
看起来这是使用month-year
获取单个字段的一种方法。当然,这不是实现此目标的最佳方法
CONCAT(CAST(MONTH(CAST(t1.some_date as DATE)) as Varchar(2)) , '-' , CAST(YEAR(CAST(t1.some_date as DATE)) as Varchar(4))) as Issue_Month,
答案 2 :(得分:0)
您可以尝试这样的事情:
SELECT
(MONTH(CAST(t1.some_date as DATE)) + ' ' + YEAR(CAST(t1.some_date as DATE))) as Issue_Month,
COUNT(*) as c
FROM
(sub query) t1
GROUP BY
(MONTH(CAST(t1.some_date as DATE)), YEAR(CAST(t1.some_date as DATE)))
分组子句不需要bla + bla
。您可以按原样包含它们。
顺便说一句,因为您没有使用任何其他表格作为月份的基础,所以您只会得到月份中包含Issue
的月份。为了解决这个问题,您可以使用另一个表,该表保留每个月的所有月份以及您想要拥有的所有数据(其中的天数,简写形式,年度季度,节假日等),并将Issue_Month
保留到该表中,和GROUP BY
主要月份表。