Sql 如何在列的子集上进行分组选择

Sql 如何在列的子集上进行分组选择,sql,group-by,Sql,Group By,此Sql不起作用,我不想将DATEDIFF(mi,date1,date2)添加到groupby子句中。解决方案是什么?找到了答案: 我需要使用加积门函数,如min、sum等 在我的代码中: 选择。。。。max(DATEDIFF(mi,date1,date2))您需要按所有非聚合进行分组,才能这样编写查询。如果任何date1值只有一个可能的date2值,则可以更改 SELECT DATEPART(yy, date1) AS YEAR, DATEPART(mm, date1) AS M

此Sql不起作用,我不想将
DATEDIFF(mi,date1,date2)
添加到
groupby
子句中。解决方案是什么?

找到了答案:
我需要使用加积门函数,如
min、sum


在我的代码中

选择。。。。max(DATEDIFF(mi,date1,date2))

您需要按所有非聚合进行分组,才能这样编写查询。如果任何date1值只有一个可能的date2值,则可以更改

SELECT DATEPART(yy, date1) AS YEAR,
       DATEPART(mm, date1) AS MONTH,
       DATEPART(dd, date1) AS DAY,
       DATEPART(hh, date1) AS hour ,
       min(DATEPART(mi, date1)) AS MINUTE,
       DATEDIFF(mi, date1, date2) AS aaa
FROM mytb with(nolock)
GROUP BY DATEPART(yy, date1),
         DATEPART(mm, date1),
         DATEPART(dd, date1),
         DATEPART(hh, date1),
         DATEPART(mi, date1)
ORDER BY DATEPART(yy, date1) ,
         DATEPART(mm, date1),
         DATEPART(dd, date1),
         DATEPART(hh, date1),
         DATEPART(mi, date1)

避免在其上聚合(因为它是一个聚合)

您也不会解释为什么不希望按DATEDIFF(mi,date1,date2)分组,因此如果上述内容不充分,您可以编辑问题以准确解释您正在尝试做什么,最好是使用一些示例数据和所需结果

DATEDIFF(mi, date1, date2)
min(DATEDIFF(mi, date1, date2))