繁体   English   中英

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

[英]How can i get grouped data in Sub-Query

我有下面的数据表

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 (GROUPED IDS)组组ME1.MetricEventId IN (GROUPED IDS)还是有其他选择

我想这就是您要寻找的东西:

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查询中一样减去毫秒。

小提琴演示

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM