[英]Dynamic pivot with time datatype in SQL Server
SELECT
PARTNO, BATCHNO, ' + @IdleHoursColumns + '
INTO
TEMPTABLE_IH
FROM
[dbo].[PRODUCTION_IH]
PIVOT
(SUM(IDLETIME))
FOR REASON IN (' + @IdleHoursColumns + ')) AS P'
--printed query
SELECT
PARTNO, BATCHNO, [POWERCUT]
INTO
TEMPTABLE_IH
FROM
[dbo].[PRODUCTION_IH]
PIVOT
(SUM(IDLETIME)
FOR REASON IN ([POWERCUT])) AS P
如何在 SQL Server 中使用具有time
數據類型的動態數據透視表? 我試圖將我的數據移動到一個臨時表中,並將行值動態顯示為列。 該查詢非常適用於整數數據類型列。 但我有一個錯誤
操作數數據類型時間對求和運算符無效
我嘗試使用 cast 函數和 Datediff 但它也拋出錯誤。
如果您的數據類型不是數字,那么您應該使用MAX
或MIN
而不是SUM
SELECT PARTNO,BATCHNO, ' + @IdleHoursColumns + '
INTO TEMPTABLE_IH
FROM [dbo].[PRODUCTION_IH]
PIVOT( MAX(IDLETIME))
FOR REASON IN (' + @IdleHoursColumns + ')) AS P'
請嘗試以下操作:
SELECT T1.PARTNO, T1.BATCHNO, T2.[POWERCUT] FROM (
SELECT PARTNO,BATCHNO,[POWERCUT]
--INTO TEMPTABLE_IH
FROM [DBO].[PRODUCTION_IH]
PIVOT(MAX(IDLETIME)
FOR REASON IN ([POWERCUT])) AS P)T1
JOIN
(
SELECT PARTNO,BATCHNO, SUM(DATEDIFF(MINUTE, 0, IDLETIME)) / 60.0 AS [POWERCUT]
FROM [DBO].[PRODUCTION_IH]
GROUP BY PARTNO,BATCHNO
) T2
ON T1.PARTNO = T2.PARTNO AND T1.BATCHNO = T2.BATCHNO
它將為您提供以小時為單位的總時間。 您可以修改它以包含所有“原因”列。
HTH
謝謝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.