SQL Server-透视表查询
我从作业历史记录表中显示以下内容SQL Server-透视表查询,sql,sql-server,Sql,Sql Server,我从作业历史记录表中显示以下内容 SELECT sum(run_duration) as [RUN_DURATION], sysjobhistory.step_id, sysjobhistory.step_name FROM msdb.dbo.sysjobhistory INNER JOIN msdb.dbo.sysjobs ON msdb.dbo.sysjobhistory.
SELECT
sum(run_duration) as [RUN_DURATION],
sysjobhistory.step_id,
sysjobhistory.step_name
FROM msdb.dbo.sysjobhistory
INNER JOIN msdb.dbo.sysjobs
ON msdb.dbo.sysjobhistory.job_id = msdb.dbo.sysjobs.job_id
WHERE sysjobhistory.run_date <= Datepart(yyyy, @dateparam) * 10000 +
Datepart(mm, @dateparam) * 100 +
Datepart
(
dd, @dateparam)
AND sysjobs.name = @JobName --remove this line if you want to show all jobs for the specified day
AND step_id <> 0
-- AND run_status = 1
GROUP BY RUN_DATE, sysjobhistory.step_id,sysjobhistory.step_name
我想以透视格式显示它
对于特定作业的逐月逐日,请参阅我正在进行的但不是PIVOT格式的各个步骤的执行时间
谁能帮忙吗
关于基本上,将查询移动到一个FROM子选择查询中,我将结果别名为PreQuery。由此,对于要显示为列的每个步骤,都将包装在SUM case/when中。As-you-should-make/name表示该步骤作为最终列名。我显然不知道这些步骤,因此无法强制使用最终的列名,但我认为这足以让您使用 至于外部查询的SUM和GROUP BY的原因。对于每个日期,内部查询将返回数据的多少个步骤。由于您只需要为每个日期的最后一行创建一个交叉表,因此只能按日期分组。这是可以的,因为每个步骤只有一条记录,单个实例的总和只给出该值一次。如果未找到此类步骤,则该值将为NULL,如果对其应用合并,则该值将为0 希望这是有意义的
select
PreQuery.Run_Date,
SUM( case when PreQuery.step_id = 1 then PreQuery.Run_Duration end )
as Step1DescriptiveNameForColumn,
SUM( case when PreQuery.step_id = 2 then PreQuery.Run_Duration end )
as Step2DescriptiveNameForColumn,
SUM( case when PreQuery.step_id = 3 then PreQuery.Run_Duration end )
as Step3DescriptiveNameForColumn,
SUM( case when PreQuery.step_id = 4 then PreQuery.Run_Duration end )
as Step4DescriptiveNameForColumn,
etc... for 5-10
from
( SELECT
sjh.Run_Date,
sjh.step_id,
sjh.step_name,
sum(sj.run_duration) as [RUN_DURATION]
FROM
msdb.dbo.sysjobhistory sjh
INNER JOIN msdb.dbo.sysjobs sj
ON sjh.job_id = sj.job_id
WHERE
sjh.step_id <> 0
AND sjh.run_date <= Datepart(yyyy, @dateparam) * 10000
+ Datepart(mm, @dateparam) * 100
+ Datepart(dd, @dateparam)
GROUP BY
RUN_DATE,
sjh.step_id,
sjh.step_name ) PreQuery
分组
PreQuery.Run\u date您有固定的步骤列表吗?我肯定会有生成器生成查询,但如果您有一组基于相应ID的特定步骤,我可以帮助您进行特定查询,而不是一般查询。步骤是固定的-每天在该作业中执行10个步骤。