Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server dateid格式为yyyymmdd时如何按月分组_Sql Server_Ssms - Fatal编程技术网

Sql server dateid格式为yyyymmdd时如何按月分组

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

我在SQLServer管理工作室工作。我正试图通过我的查询,将2014-2015年的重复访问人数按地点按月分组。我几乎完成了查询,但我不知道如何按月对结果进行分组。我应该插入什么代码来按月对其进行分组?谢谢

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)