Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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 如何在子查询中获取分组数据_Sql_Sql Server 2008 - Fatal编程技术网

Sql 如何在子查询中获取分组数据

Sql 如何在子查询中获取分组数据,sql,sql-server-2008,Sql,Sql Server 2008,我有下表数据 Id date ----------------------------------- 1 2014-06-11 08:35:00.000 2 2014-06-11 08:35:00.000 3 2014-06-11 08:50:00.000 4 2014-06-11 08:55:00.000 5 2014-06-11 08:55:00.000 我想按日期查询和分组行,并得到下面的结果 date

我有下表数据

Id      date
-----------------------------------
1       2014-06-11 08:35:00.000
2       2014-06-11 08:35:00.000
3       2014-06-11 08:50:00.000
4       2014-06-11 08:55:00.000
5       2014-06-11 08:55:00.000
我想按日期查询和分组行,并得到下面的结果

 date                            Ids
----------------------------------------
2014-06-11 08:35:00.000          1,2
2014-06-11 08:50:00.000          3
2014-06-11 08:55:00.000          4,5
为此,我写了一个查询

SELECT dateadd(millisecond, - datepart(millisecond, EventDate) ,EventDate), COUNT(*),
STUFF((SELECT ',' + CAST(MetricEventId as varchar) FROM MetricEvents ME1  WHERE ME1.MetricEventId = ME.MetricEventId FOR XML PATH('')),1,1,'') FROM MetricEvents ME
GROUP BY dateadd(millisecond, - datepart(millisecond, EventDate) ,EventDate),EventUrl
但我收到的错误消息是

Column 'MetricEvents.MetricEventId' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

我知道它也希望我按MetricEvents.MetricEventId对查询进行分组,但这不是我的要求,因为我只想按日期对它们进行分组,如何在子查询中获得分组数据,例如
ME1.MetricEventId in(分组ID)
,或者是否有其他方法

我想这就是您想要的:

SELECT t1.Date , (SELECT STUFF((SELECT ','+ cast(t2.id as nvarchar(5))
              FROM DemoTable t2 WHERE t2.Date = t1.Date
              FOR XML PATH('')), 1, 1, '')) as IDS
FROM DemoTable t1
GROUP By t1.Date
根据数据中是否有毫秒,还可以像在自己的SQL查询中一样减去毫秒


您是否也要求在数据+1中的任何位置使用MetricEventId进行小提琴演示,我是这样想的,但我还有其他困惑,现在已经非常清楚了