我正在尝试像这样从现有表生成新表。我希望当前表中的“ ProjectName”列返回不同的值作为结果表中的新列。然后,我希望各行返回不同的UserID列,为每个用户计算每个项目的总TimeIn和TimeOut。
然后我想将结果放入aspx gridview或只是html表。
请参见下图:
假设您要处理的是固定的项目列表,则可以使用条件聚合:
SELECT
userID,
manager,
SUM(CASE WHEN ProjectName = 'ProjectA' THEN DATEDIFF(minute, TimeIn, TimeOut) ELSE 0 END) ProjectA,
SUM(CASE WHEN ProjectName = 'ProjectB' THEN DATEDIFF(minute, TimeIn, TimeOut) ELSE 0 END) ProjectB,
SUM(CASE WHEN ProjectName = 'ProjectC' THEN DATEDIFF(minute, TimeIn, TimeOut) ELSE 0 END) ProjectC
FROM mytable
GROUP BY
userID,
manager
这将为您提供每个用户/经理元组在每个项目上花费的总时间,以分钟为单位,并允许给定用户/经理元组在同一项目上有多个条目。
正如您迄今未提及的任何事情尝试此查询可能会对您有所帮助
Declare @SQL varchar(max) = '
Select *
From (
Select ID
,UserID
,Manager
From Your_Table
) A
Pivot (max([ProjectName]) For [TimeIn] in (' + Stuff((Select Distinct ','+QuoteName (TimeIn)
From Your_Table A
Order By 1
For XML Path('')),1,1,'') + ') ) p'
--Print @SQL
Exec(@SQL)