Sql server dateid格式为yyyymmdd时如何按月分组
我在SQLServer管理工作室工作。我正试图通过我的查询,将2014-2015年的重复访问人数按地点按月分组。我几乎完成了查询,但我不知道如何按月对结果进行分组。我应该插入什么代码来按月对其进行分组?谢谢Sql server dateid格式为yyyymmdd时如何按月分组,sql-server,ssms,Sql Server,Ssms,我在SQLServer管理工作室工作。我正试图通过我的查询,将2014-2015年的重复访问人数按地点按月分组。我几乎完成了查询,但我不知道如何按月对结果进行分组。我应该插入什么代码来按月对其进行分组?谢谢 SELECT loc_id, date_id, COUNT(visit_type) AS RepeatVisit FROM visit_fact WHERE visit_type = 'REPEAT' AND date_id >= 20
SELECT
loc_id, date_id,
COUNT(visit_type) AS RepeatVisit
FROM
visit_fact
WHERE
visit_type = 'REPEAT'
AND date_id >= 20140101 AND date_id < 20150101
GROUP BY
loc_id, date_id
选择
地址id、日期id、,
将(就诊类型)计为重复就诊
从…起
探访
哪里
访问类型='重复'
日期_id>=20140101,日期_id<20150101
分组
地址号,日期号
dateid
是一个varchar(8)
列。我假设dateid是一个文本类型,请使用substr()
:
选择loc\u id,substr(日期\u id,1,6)作为年\u月,计数(就诊类型)作为重复就诊
从访问事实
其中访问类型='重复'
日期_id>=20140101
日期_id<20150101
按loc_id分组,substr(日期_id,1,6)
谢谢!我忘了提到,dateid是一个varchar。这会影响你的答案吗?@bad varchar是“文本”类型-没关系。如果是日期-为什么会存储为字符串??始终使用最合适的数据类型-对于日期,即date
(或者DATETIME2(n)
,如果您也需要时间)-但最肯定的是varchar
。。。。
Select loc_id, substr(date_id,1,6) as year_month, count(visit_type) as RepeatVisit
FROM visit_fact
where visit_type = 'REPEAT'
and date_id >= 20140101
and date_id < 20150101
group by loc_id, substr(date_id,1,6)