0
A
答えて
0
私が正しくあなたの例のデータを読んでいる場合は、それはQuery3のために、あなたはデータフリップフロップ日付のを持っているようです。私は10/20/2017のQuery3は2:03、10/21/2017は経過時間が1:48であるべきだと思います。
実際そうであれば、ここではCommon Table Expressions、集計とPIVOTの組み合わせを使用するソリューションがあります。あなたの質問にあなたが提供したサンプルデータのために働きます。他のデータ用に調整が必要な場合があります。
set nocount on
Declare @t Table (ID int, [Date] Date, ExecutedTime varchar(10), Label Varchar(10))
insert into @t values
(1,'2017-10-20','0:01:16','Query1'),
(2,'2017-10-20','0:00:20','Query1'),
(3,'2017-10-20','0:00:14','Query1'),
(4,'2017-10-20','0:01:43','Query2'),
(5,'2017-10-20','0:00:33','Query2'),
(6,'2017-10-20','0:00:34','Query2'),
(7,'2017-10-20','0:01:18','Query3'),
(8,'2017-10-20','0:00:30','Query3'),
(9,'2017-10-20','0:00:15','Query3'),
(10,'2017-10-21','0:01:16','Query1'),
(11,'2017-10-21','0:00:20','Query1'),
(12,'2017-10-21','0:00:14','Query1'),
(13,'2017-10-21','0:01:43','Query2'),
(14,'2017-10-21','0:00:33','Query2'),
(15,'2017-10-21','0:00:34','Query2'),
(16,'2017-10-21','0:01:18','Query3'),
(16,'2017-10-21','0:00:30','Query3')
;
With ExecutedTimeInSeconds as --Convert ExecutedTime to seconds in preparation for aggregation
(
select
[Date],
Label,
datepart(hour,(convert(time,executedTime))) * 3600 +
datepart(minute,(convert(time,executedTime))) * 60 +
datepart(second,(convert(time,executedTime))) as ElapsedSeconds
from @t
)
,AggregatedDataInElapsedSeconds as --Aggregate the seconds by Date and Label
(
SELECT [Date]
,Label
,sum(ElapsedSeconds) AS ElapsedSeconds
FROM ExecutedTimeInSeconds
GROUP BY [Date]
,Label
),
DataReadyForPivot as --Convert the aggregageted seconds back to an elapsed time
(
SELECT [Date], Label,
RIGHT('0' + CAST(ElapsedSeconds/3600 AS VARCHAR),2) + ':' +
RIGHT('0' + CAST((ElapsedSeconds/60) % 60 AS VARCHAR),2) + ':' +
RIGHT('0' + CAST(ElapsedSeconds % 60 AS VARCHAR),2) as ExecutedSum
from AggregatedDataInElapsedSeconds
)
,
PivotedData as --Pivot the data
(
SELECT *
FROM DataReadyForPivot
PIVOT(MAX(ExecutedSum) FOR Label IN (
[Query1]
,[Query2]
,[Query3]
)) AS pvt
)
select --add a row number as Id
ROW_NUMBER() over (order by [Date] desc) as Id,
*
from PivotedData
| Id | Date | Query1 | Query2 | Query3 |
|----|------------|----------|----------|----------|
| 1 | 2017-10-21 | 00:01:50 | 00:02:50 | 00:01:48 |
| 2 | 2017-10-20 | 00:01:50 | 00:02:50 | 00:02:03 |
関連する問題
- 1. SQLクエリのヘルプ、ms SQL Server 2005(グループ化している)
- 2. ヘルプで必要なSQLグループ
- 3. SQL Serverトリガのヘルプ
- 4. SQL ServerのPIVOTヘルプ
- 5. ヘルプ() - SQL Server 2008の
- 6. SQL Serverでグループ化するグループ
- 7. SQL Serverグループ
- 8. グループSQL Serverの
- 9. SQL Serverは、グループ
- 10. SQL Serverの:グループ
- 11. グループ - SQL Serverの
- 12. SQL Serverでクエリヘルプをグループ化する
- 13. SQL Server 2005のピボットクエリのヘルプ
- 14. SQL Server 2005クエリのヘルプ
- 15. SQL Server SUM GROUP BYヘルプ
- 16. SQL Server '05クエリステートメントのヘルプ
- 17. SQL Serverでグループ化する方法
- 18. SQL Serverグループ月別
- 19. のSQL Server 2014グループ
- 20. SQL Server 2008で12時間形式を指定する方法
- 21. SQL ServerでXmlインデックスの格納場所を指定する
- 22. SQL Server 2008指定条件でピボット解除する
- 23. SQL SERVERクエリのヘルプ(カーソルを使用)
- 24. Sql ServerテーブルでID指定をYesに変更できない
- 25. SQL Server/T-SQL:特定の間隔の選択(グループ化)
- 26. SQL Serverストアドプロシージャのフォルダ/グループ
- 27. SQL SERVERのテーブルのグループ化
- 28. SQL Serverの:UNION ALL&グループ
- 29. セカンダリレプリカSQL Server(可用性グループ)
- 30. SQL Server:結果のグループ化
使用しているデータベース・アリ、。これは、データベースがサポートしている場合は、ピボット(Pivot)によって実行できます。また、このリンクを見てみると、一度集計するとデータを転置する方法(列に集計する)を理解するのに役立ちます。 https://www.periscopedata.com/blog/using-row-numbering-and-full-joins-to-transpose-wide-tables.html – moxin
SQL Fiddleリンクを投稿すると、誰かがコードを手助けすることができます。 – moxin
ユーザーのほとんどは画像の代わりに書式設定されたテキストを好むので、コード、サンプルデータ、画像として投稿しないでください。 – Sami