Javascript 如何将行转换为列按行数创建标题
我正在根据时钟记录列表创建员工时钟输入/输出报告 我尝试过使用SQLPivot、c#和javascript循环,但都没有成功。 这是我尝试过的,不确定用什么代替“Max”,因为我需要每一张唱片Javascript 如何将行转换为列按行数创建标题,javascript,c#,sql,Javascript,C#,Sql,我正在根据时钟记录列表创建员工时钟输入/输出报告 我尝试过使用SQLPivot、c#和javascript循环,但都没有成功。 这是我尝试过的,不确定用什么代替“Max”,因为我需要每一张唱片 SELECT * FROM ( SELECT cast (ClockTime as date) as Date , xrefnumber as EmployeeNo, ClockTime FROM #log ) AS SourceTable
SELECT *
FROM
(
SELECT cast (ClockTime as date) as Date ,
xrefnumber as EmployeeNo,
ClockTime
FROM #log
) AS SourceTable PIVOT(max(ClockTime) FOR ClockTime IN([ClockTime1],
[ClockTime2],
[ClockTime3],
[ClockTime4],
[ClockTime5],
[ClockTime6],
[ClockTime7],
[ClockTime8],
[ClockTime9],
[ClockTime10])) AS PivotTable;
这是我的数据
Date EmplooyeeNo ClockTime
---------- ------- -----------------------
2019-06-10 0000010 2019-06-10 05:58:35.000
2019-06-10 0000010 2019-06-10 06:04:59.000
2019-06-10 0000010 2019-06-10 06:14:38.000
2019-06-10 0000010 2019-06-10 11:19:13.000
2019-06-10 0000010 2019-06-10 11:30:28.000
2019-06-10 0000010 2019-06-10 11:34:25.000
2019-06-10 0000010 2019-06-10 11:48:00.000
2019-06-11 0000010 2019-06-11 12:29:04.000
2019-06-11 0000010 2019-06-11 12:30:56.000
2019-06-11 0000010 2019-06-11 12:42:06.000
2019-06-11 0000010 2019-06-11 12:42:30.000
2019-06-10 0000018 2019-06-10 11:48:06.000
2019-05-30 0120485 2019-05-30 10:30:11.000
2019-05-30 0120485 2019-05-30 10:33:39.000
2019-05-30 0120485 2019-05-30 10:34:10.000
2019-05-30 0120485 2019-05-30 10:36:09.000
2019-05-30 0120485 2019-05-30 10:38:21.000
2019-05-30 0120485 2019-05-30 10:38:30.000
2019-05-30 0120485 2019-05-30 10:43:07.000
2019-05-30 0120485 2019-05-30 10:43:29.000
这是理想的输出
Date EmplooyeeNo ClockTime1 ClockTime2 ClockTime3 ClockTime4 ClockTime5 ClockTime6 ClockTime7 ClockTime8
2019-06-10 0000010 2019-06-10 05:58:35.000 2019-06-10 06:04:59.000 2019-06-10 06:14:38.000 2019-06-10 11:19:13.000 2019-06-10 11:30:28.000 2019-06-10 11:34:25.000 2019-06-10 11:48:00.000
2019-06-11 0000010 2019-06-11 12:29:04.000 2019-06-11 12:30:56.000 2019-06-11 12:42:06.000 2019-06-11 12:42:30.000
2019-06-10 0000018 2019-06-10 11:48:06.000
2019-05-30 0120485 2019-05-30 10:30:11.000 2019-05-30 10:33:39.000 2019-05-30 10:34:10.000 2019-05-30 10:36:09.000 2019-05-30 10:38:21.000 2019-05-30 10:38:30.000 2019-05-30 10:43:07.000 2019-05-30 10:43:29.000
如果必须指定列金额,则可以。这将满足您的需要。我基本上只是根据EmployeeNo和时钟时间日期对值进行分组,这样您就有了一个值得关注的值
SELECT
*
FROM
(
SELECT
CAST(ClockTime AS DATE) AS [Date]
,xrefnumber AS EmployeeNo
,ClockTime
,'ClockTime' + CAST(ROW_NUMBER() OVER(PARTITION BY xrefnumber, CAST(ClockTime AS DATE) ORDER BY ClockTime ASC) AS VARCHAR(3)) AS ClockTimeDesc
FROM
#log
) AS SourceTable
PIVOT
(MAX(ClockTime) FOR ClockTimeDesc IN([ClockTime1], [ClockTime2], [ClockTime3], [ClockTime4], [ClockTime5], [ClockTime6], [ClockTime7], [ClockTime8])) AS PivotTable