以下に示すクエリは、すべてのアクティブなジョブを選択し、各フェーズのセルに以下を示します。
EstimatedTime / ActualTime.
(HH:MM)
これは、ActualTime と EstimatedTime が time(7) のときに機能しましたが、その後、その型を BigInt に変更し、TimeSpan.Ticks を格納しました。
上記の形式に従って表示されるようにこのクエリを変更するにはどうすればよいですか? データグリッドはSQLが引き込むものを正確に表示するため、表示されているときではなく、SQLレベルで実行する必要があります。
DECLARE @cols AS NVARCHAR(MAX);
DECLARE @query AS NVARCHAR(MAX);
select @cols = STUFF((SELECT distinct ',' + ID + ',' + QUOTENAME(Name)
FROM JobPhases
FOR XML PATH(''), TYPE
).value('.', 'NVARCHAR(MAX)')
, 1, 1, '');
SELECT @query = 'SELECT *
FROM
(
SELECT j.JobID as ''JobNumber'', c.Registration as ''Reg.'', p.Name,
CONVERT(VARCHAR(8), CAST(DATEADD(ms, SUM(DATEDIFF(ms, ''0:00:00'', j.EstimatedTime)), ''00:00:00'') AS TIME), 108) + ''/'' +
CONVERT(VARCHAR(8), CAST(DATEADD(ms, SUM(DATEDIFF(ms, ''0:00:00'', j.ActualTime)), ''00:00:00'') AS TIME), 108) as [x]
FROM JobDetails AS j
INNER JOIN JobPhases p ON p.ID = j.PhaseId
INNER JOIN Jobs job on job.ID = j.JobID
INNER JOIN Cars c on job.CarID = c.ID
WHERE (job.Status = 1 or job.Status = 0)
GROUP BY c.Registration, p.Name, j.JobID
) JobDetails
PIVOT
( MAX(x)
FOR Name IN (' + @cols + ')
) pvt'
execute(@query);
どうもありがとう!