朋友! 我有一个查询和结果。当我选择然后我得到结果。 但我想在一行中看到那个结果。
现在查询结果就是这样
Agreement_no Total_Time Officer_name Sp/Tt/by_Of Sp/Tt/for l- pros
999Li74 0:18:19 'Mr.Jason' 0:02:00 0.40 sec
999Li74 0:18:19 'Mr.Jason' 0:02:00 0.25 sec
999Li74 0:18:19 'Mr.Jason' 0:02:00 0.40 sec
999Li74 0:18:19 'Mr.Jason' 0:02:00 0.15 sec
999Li74 0:18:19 'Mr.Firdovsi' 0:16:19 0.42 sec
999Li74 0:18:19 'Mr.Firdovsi' 0:16:19 0.20 sec
999Li74 0:18:19 'Mr.Firdovsi' 0:16:19 1.2 sec
999Li74 0:18:19 'Mr.Firdovsi' 0:16:19 11.1 sec
999Li74 0:18:19 'Mr.Firdovsi' 0:16:19 3.1 sec
999Li74 0:18:19 'Mr.Firdovsi' 0:16:19 0.13 sec
我从12个JOINED表中查询此结果。
第一列是贷款批准的贷款 agreement_no 。 第二个 Total_Time 列是使用[DATEDIFF]和[OVER PARTITION BY] Agreement_no的开始时间和结束时间的结果。 第三列是提供贷款和批准贷款的人员姓名。
第4列( Sp / Tt / by_Of -按官员花费总时间)是使用[DATEDIFF]和[OVER PARTITION BY] Officer_Name 的开始时间和结束时间的结果>。
第5列( Sp / Tt / l-pros -借用假体的总时间)是使用[DATEDIFF]的开始时间和结束时间的结果。
当我按天查询批准的贷款时,由于这种麻烦,我看到很多结果。
我希望查询结果如下所示
Agreement_no Total_Time Officer_name Sp/Tt/by_Of Officer_name2 Sp/Tt/by_Of
999Li74 0:18:19 Mr.Jason 0:02:00 Mr.Firdovsi 0:16:19
注意:第五列并不重要。
如果还有其他贷款,我也希望如下所示
Agreement_no Total_Time Officer_name Sp/Tt/by_Of Officer_name2 Sp/Tt/by_Of
999Li74 0:18:19 Mr.Jason 0:02:00 Mr.Firdovsi 0:16:19
1000Li01 0:27:30 Mr.Jon 0:12:15 Mr.Felaket 0:15:15
答案 0 :(得分:0)
我将使用临时表解决这个问题。第一个表#DataIn应该包含查询结果,就像表中显示的一样。
SELECT [Agreement_no]
,[Total_Time]
,[Officer_name]
,[Sp/Tt/by_Of]
,CAST(REPLACE([Sp Tt for], ' sec', '') AS decimal(4,2)) AS [Sp/Tt/for l- pros]
INTO #test1
FROM #DataIn;
要在#DataIn中获取数据,您应该使用以下方法更改查询:
SELECT … INTO #DataIn …
在我的查询中,REPLACE是从[Sp / Tt / for l-pros]中删除“ sec”,而CAST是将值转换为十进制值。 您的数据(在#Test1中)现在如下所示:
Agreement_no Total_Time Officer_name Sp/Tt/by_Of Sp/Tt/for l- pros
999Li74 0:18:19 'Mr.Jason' 0:02:00 0.40
999Li74 0:18:19 'Mr.Jason' 0:02:00 0.25
999Li74 0:18:19 'Mr.Jason' 0:02:00 0.40
999Li74 0:18:19 'Mr.Jason' 0:02:00 0.15
999Li74 0:18:19 'Mr.Firdovsi' 0:16:19 0.42
999Li74 0:18:19 'Mr.Firdovsi' 0:16:19 0.20
999Li74 0:18:19 'Mr.Firdovsi' 0:16:19 1.2
999Li74 0:18:19 'Mr.Firdovsi' 0:16:19 11.1
999Li74 0:18:19 'Mr.Firdovsi' 0:16:19 3.1
999Li74 0:18:19 'Mr.Firdovsi' 0:16:19 0.13
现在,您可以按Officer_name汇总[Sp / Tt / for l-pros]栏:
SELECT [Agreement_no]
,[Total_Time]
,[Officer_name]
,[Sp/Tt/by_Of]
,CONVERT(varchar, DATEADD(ms, SUM ([Sp/Tt/for l- pros]) * 1000, 0), 114) AS [Sp/Tt/for l- pros]
FROM #test1
GROUP BY [Officer_name], [Agreement_no], [Total_Time], [Sp/Tt/by_Of];
此查询中的DATEADD用于将结果值显示为时间。为此,我将以毫秒为单位计算时间(将以秒为单位的值乘以1000)。 该查询的结果:
Agreement_no Total_Time Officer_name Sp/Tt/by_Of Sp/Tt/for l- pros
999Li74 0:18:19 'Mr.Firdovsi' 0:16:19 00:00:16:150
999Li74 0:18:19 'Mr.Jason' 0:02:00 00:00:01:200
关于保罗
答案 1 :(得分:-1)
保罗。 但是我只想看下面的结果。
Agreement_no Total_Time Officer_name Sp/Tt/by_Of Officer_name2 Sp/Tt/by_Of
999Li74 0:18:19 Mr.Jason 0:02:00 Mr.Firdovsi 0:16:19