Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.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 按月在T-SQL中对查询结果进行分组_Sql Server_Tsql - Fatal编程技术网

Sql server 按月在T-SQL中对查询结果进行分组

Sql server 按月在T-SQL中对查询结果进行分组,sql-server,tsql,Sql Server,Tsql,我正在寻找如何按月份和WindowsAccount对查询结果进行分组的提示,其中月份信息来自查询中的InsertedAt列。如果有人能提出一种实现这一目标的方法,我将不胜感激。 先谢谢你 SELECT InsertedAt, TaskName, WindowsAccount, Start, Round (Time / 60.1, 2) AS Time FROM (SELECT CONVERT (VARCHAR(23), Inserte

我正在寻找如何按月份和WindowsAccount对查询结果进行分组的提示,其中月份信息来自查询中的InsertedAt列。如果有人能提出一种实现这一目标的方法,我将不胜感激。 先谢谢你

 SELECT InsertedAt,
       TaskName,
       WindowsAccount,
       Start,
       Round (Time / 60.1, 2) AS Time
FROM   (SELECT CONVERT (VARCHAR(23), InsertedAt, 104) AS InsertedAt,
               Subject,
               TaskName,
               WindowsAccount,
               CONVERT (VARCHAR(23), NewStart, 104)   AS Start,
               Datediff("MINUTE", OldStart, OldEnd)   AS OldDiff,
               Datediff("MINUTE", NewStart, NewEnd)   AS Time
        FROM   History
        WHERE  ( Month(InsertedAt) IN ( 9, 10, 11 )
                 AND Year(InsertedAt) = 2015 )) AS Tab
WHERE  Tab.OldDiff <> Tab.Time
ORDER  BY InsertedAt,
          WindowsAccount

您可以使用DatePart函数进行分组

例如:


您可以使用DatePart函数进行分组

例如:


谢谢,@momar我的目标是在不添加新列的情况下为输出保留以下列。我的报告只需要这些列。插入数据、任务名、Windows帐户、开始和时间。InsertedAt是一个标准的日期列。从您的角度来看,是否可以根据我的标准按月和按帐户分组?这个查询是什么样子的?谢谢大家!@IvanaMaria使用group by意味着必须在其他列上使用聚合函数Sum、Count等。最好放一些示例数据和预期结果,以便更好地理解您希望通过querytanks@momar实现的目标。我的查询旨在从数据库中传递信息,其中的结果应来自今年最后3个月的“InsertedAt”列,并显示与条件OldDiffTime匹配的结果。输出列仅限于InsertedAt、TaskName、WindowsAccount、Start和Time,结果应按月份和WindowsAccount列分组。也许我的查询应该看起来不同,以便能够按月分组?在一些外部帮助下,我可以通过在第一个和第二个select子句中添加一列“月”并在我的轮前添加一个SUM函数来解决我的问题:“SUM Round Time/60.1,2 AS Time”。然后就可以分组了。谢谢,@momar我的目标是在不添加新列的情况下为输出保留以下列。我的报告只需要这些列。插入数据、任务名、Windows帐户、开始和时间。InsertedAt是一个标准的日期列。从您的角度来看,是否可以根据我的标准按月和按帐户分组?这个查询是什么样子的?谢谢大家!@IvanaMaria使用group by意味着必须在其他列上使用聚合函数Sum、Count等。最好放一些示例数据和预期结果,以便更好地理解您希望通过querytanks@momar实现的目标。我的查询旨在从数据库中传递信息,其中的结果应来自今年最后3个月的“InsertedAt”列,并显示与条件OldDiffTime匹配的结果。输出列仅限于InsertedAt、TaskName、WindowsAccount、Start和Time,结果应按月份和WindowsAccount列分组。也许我的查询应该看起来不同,以便能够按月分组?在一些外部帮助下,我可以通过在第一个和第二个select子句中添加一列“月”并在我的轮前添加一个SUM函数来解决我的问题:“SUM Round Time/60.1,2 AS Time”。然后分组是可能的。如果您有两条记录的InsertedAt值为2015-11-09和2015-11-06,则您希望在结果中看到哪个值?开始和时间字段也存在同样的问题。如果您有两条记录的InsertedAt值为2015-11-09和2015-11-06,则您希望在结果中看到哪个值?“开始”和“时间”字段也存在同样的问题。
SELECT DATEPART(m,OrderDate) AS N'Month'
    ,SUM(TotalDue) AS N'Total Order Amount'
FROM Sales.SalesOrderHeader
GROUP BY DATEPART(m,OrderDate)
ORDER BY DATEPART(m,OrderDate);