- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我希望使用 t-sql 从 ReportServer.dbo.Schedule 表中提取“人类可读”的计划信息。
以下是“人类可读”的示例。
At 6:02 AM every Sun, Mon, Tue, Wed, Thu, Fri, Sat of every week, starting 2/28/2011
表中有一堆数字字段用于存储时间表,但我想将它们转换为单词,如我的示例所示。
有没有人用报告服务做过这个?
最佳答案
SQL 不太适合字符串操作或按位操作,解析此表需要两者兼而有之。我确信 SSRS 在 SQL 中不会这样做:我可能用 C# 一半的时间和一半的行来编写它。
USE ReportServer;
WITH EnhancedSched
AS (
SELECT
dbo.Schedule.ScheduleID ,
dbo.Schedule.Name ,
dbo.Schedule.StartDate ,
dbo.Schedule.Flags ,
dbo.Schedule.NextRunTime ,
dbo.Schedule.LastRunTime ,
dbo.Schedule.EndDate ,
dbo.Schedule.RecurrenceType ,
dbo.Schedule.MinutesInterval ,
dbo.Schedule.DaysInterval ,
dbo.Schedule.WeeksInterval ,
dbo.Schedule.DaysOfWeek ,
dbo.Schedule.DaysOfMonth ,
dbo.Schedule.Month ,
dbo.Schedule.MonthlyWeek ,
dbo.Schedule.State ,
dbo.Schedule.LastRunStatus ,
dbo.Schedule.ScheduledRunTimeout ,
dbo.Schedule.CreatedById ,
dbo.Schedule.EventType ,
dbo.Schedule.EventData ,
dbo.Schedule.Type ,
dbo.Schedule.ConsistancyCheck ,
dbo.Schedule.Path ,
CASE WHEN DaysOfWeek & 1 <> 0 THEN 'Sun, '
ELSE ''
END + CASE WHEN DaysOfWeek & 2 <> 0 THEN 'Mon, '
ELSE ''
END + CASE WHEN DaysOfWeek & 4 <> 0 THEN 'Tue, '
ELSE ''
END + CASE WHEN DaysOfWeek & 8 <> 0 THEN 'Wed, '
ELSE ''
END
+ CASE WHEN DaysOfWeek & 16 <> 0 THEN 'Thu, '
ELSE ''
END + CASE WHEN DaysOfWeek & 32 <> 0 THEN 'Fri, '
ELSE ''
END + CASE WHEN DaysOfWeek & 64 <> 0 THEN 'Sat, '
ELSE ''
END AS DaysOfWeekString ,
CASE WHEN DaysOfMonth & 1 <> 0 THEN '1,'
ELSE ''
END + CASE WHEN DaysOfMonth & 2 <> 0 THEN '2,'
ELSE ''
END + CASE WHEN DaysOfMonth & 4 <> 0 THEN '3,'
ELSE ''
END + CASE WHEN DaysOfMonth & 8 <> 0 THEN '4,'
ELSE ''
END
+ CASE WHEN DaysOfMonth & 16 <> 0 THEN '5,'
ELSE ''
END + CASE WHEN DaysOfMonth & 32 <> 0 THEN '6,'
ELSE ''
END + CASE WHEN DaysOfMonth & 64 <> 0 THEN '7,'
ELSE ''
END + CASE WHEN DaysOfMonth & 128 <> 0 THEN '8,'
ELSE ''
END
+ CASE WHEN DaysOfMonth & 256 <> 0 THEN '9,'
ELSE ''
END + CASE WHEN DaysOfMonth & 512 <> 0 THEN '10,'
ELSE ''
END + CASE WHEN DaysOfMonth & 1024 <> 0 THEN '11,'
ELSE ''
END
+ CASE WHEN DaysOfMonth & 2048 <> 0 THEN '12,'
ELSE ''
END + CASE WHEN DaysOfMonth & 4096 <> 0 THEN '13,'
ELSE ''
END + CASE WHEN DaysOfMonth & 8192 <> 0 THEN '14,'
ELSE ''
END
+ CASE WHEN DaysOfMonth & 16384 <> 0 THEN '15,'
ELSE ''
END + CASE WHEN DaysOfMonth & 32768 <> 0 THEN '16,'
ELSE ''
END + CASE WHEN DaysOfMonth & 65536 <> 0 THEN '17,'
ELSE ''
END
+ CASE WHEN DaysOfMonth & 131072 <> 0 THEN '18,'
ELSE ''
END + CASE WHEN DaysOfMonth & 262144 <> 0 THEN '19,'
ELSE ''
END + CASE WHEN DaysOfMonth & 524288 <> 0 THEN '20,'
ELSE ''
END
+ CASE WHEN DaysOfMonth & 1048576 <> 0 THEN '21,'
ELSE ''
END + CASE WHEN DaysOfMonth & 2097152 <> 0 THEN '22,'
ELSE ''
END + CASE WHEN DaysOfMonth & 4194304 <> 0 THEN '23,'
ELSE ''
END
+ CASE WHEN DaysOfMonth & 8388608 <> 0 THEN '24,'
ELSE ''
END + CASE WHEN DaysOfMonth & 16777216 <> 0 THEN '25,'
ELSE ''
END + CASE WHEN DaysOfMonth & 33554432 <> 0 THEN '26,'
ELSE ''
END
+ CASE WHEN DaysOfMonth & 67108864 <> 0 THEN '27,'
ELSE ''
END + CASE WHEN DaysOfMonth & 134217728 <> 0 THEN '28,'
ELSE ''
END
+ CASE WHEN DaysOfMonth & 268435456 <> 0 THEN '29,'
ELSE ''
END + CASE WHEN DaysOfMonth & 536870912 <> 0 THEN '30,'
ELSE ''
END
+ CASE WHEN DaysOfMonth & 1073741824 <> 0 THEN '31,'
ELSE ''
END AS DaysOfMonthString ,
CASE WHEN Month = 4095 THEN 'every month, '
ELSE CASE WHEN Month & 1 <> 0 THEN 'Jan, '
ELSE ''
END + CASE WHEN Month & 2 <> 0 THEN 'Feb, '
ELSE ''
END + CASE WHEN Month & 4 <> 0 THEN 'Mar, '
ELSE ''
END
+ CASE WHEN Month & 8 <> 0 THEN 'Apr, '
ELSE ''
END + CASE WHEN Month & 16 <> 0 THEN 'May, '
ELSE ''
END + CASE WHEN Month & 32 <> 0 THEN 'Jun, '
ELSE ''
END
+ CASE WHEN Month & 64 <> 0 THEN 'Jul, '
ELSE ''
END + CASE WHEN Month & 128 <> 0 THEN 'Aug, '
ELSE ''
END
+ CASE WHEN Month & 256 <> 0 THEN 'Sep, '
ELSE ''
END + CASE WHEN Month & 512 <> 0 THEN 'Oct, '
ELSE ''
END
+ CASE WHEN Month & 1024 <> 0 THEN 'Nov, '
ELSE ''
END + CASE WHEN Month & 2048 <> 0 THEN 'Dec, '
ELSE ''
END
END AS MonthString ,
CASE MonthlyWeek
WHEN 1 THEN 'first'
WHEN 2 THEN 'second'
WHEN 3 THEN 'third'
WHEN 4 THEN 'fourth'
WHEN 5 THEN 'last'
END AS MonthlyWeekString ,
' starting ' + CONVERT (VARCHAR, StartDate, 101)
+ CASE WHEN EndDate IS NOT NULL
THEN ' and ending ' + CONVERT (VARCHAR, EndDate, 101)
ELSE ''
END AS StartEndString ,
CASE CONVERT(VARCHAR, DATEPART(HOUR, StartDate) % 12)
WHEN 0 THEN '12'
ELSE CONVERT(VARCHAR, DATEPART(HOUR, StartDate) % 12)
END + ':'
+ CASE WHEN DATEPART(MINUTE, StartDate) < 10
THEN '0' + CONVERT(VARCHAR(2), DATEPART(MINUTE,
StartDate))
ELSE CONVERT(VARCHAR(2), DATEPART(MINUTE, StartDate))
END + CASE WHEN DATEPART(HOUR, StartDate) >= 12 THEN ' PM'
ELSE ' AM'
END AS StartTime
FROM
Schedule
),
SuperEnhancedSchedule
AS (
SELECT
EnhancedSched.ScheduleID ,
EnhancedSched.Name ,
EnhancedSched.StartDate ,
EnhancedSched.Flags ,
EnhancedSched.NextRunTime ,
EnhancedSched.LastRunTime ,
EnhancedSched.EndDate ,
EnhancedSched.RecurrenceType ,
EnhancedSched.MinutesInterval ,
EnhancedSched.DaysInterval ,
EnhancedSched.WeeksInterval ,
EnhancedSched.DaysOfWeek ,
EnhancedSched.DaysOfMonth ,
EnhancedSched.Month ,
EnhancedSched.MonthlyWeek ,
EnhancedSched.State ,
EnhancedSched.LastRunStatus ,
EnhancedSched.ScheduledRunTimeout ,
EnhancedSched.CreatedById ,
EnhancedSched.EventType ,
EnhancedSched.EventData ,
EnhancedSched.Type ,
EnhancedSched.ConsistancyCheck ,
EnhancedSched.Path , -- spec what you need.
CASE WHEN RecurrenceType = 1
THEN 'At ' + StartTime + ' on '
+ CONVERT(VARCHAR, StartDate, 101)
WHEN RecurrenceType = 2
THEN 'Every ' + CONVERT(VARCHAR, ( MinutesInterval / 60 ))
+ ' hour(s) and '
+ CONVERT(VARCHAR, ( MinutesInterval % 60 ))
+ ' minute(s), ' + 'starting '
+ CONVERT (VARCHAR, StartDate, 101) + ' at '
+ SUBSTRING(CONVERT(VARCHAR, StartDate, 8), 0, 6)
+ ' ' + SUBSTRING(CONVERT(VARCHAR, StartDate, 109),
25, 2)
+ CASE WHEN EndDate IS NOT NULL
THEN ' and ending '
+ CONVERT (VARCHAR, EndDate, 101)
ELSE ''
END
WHEN RecurrenceType = 3
THEN 'At ' + StartTime + ' every '
+ CASE DaysInterval
WHEN 1 THEN 'day, '
ELSE CONVERT(VARCHAR, DaysInterval) + ' days, '
END + StartEndString
WHEN RecurrenceType = 4
THEN 'At ' + StartTime + ' every '
+ CASE WHEN LEN(DaysOfWeekString) > 1
THEN LEFT(DaysOfWeekString,
LEN(DaysOfWeekString) - 1)
ELSE ''
END + ' of every '
+ CASE WHEN WeeksInterval = 1 THEN ' week,'
ELSE CONVERT(VARCHAR, WeeksInterval)
+ ' weeks,'
END + StartEndString
WHEN RecurrenceType = 5
THEN 'At ' + StartTime + ' on day(s) '
+ CASE WHEN LEN(DaysOfMonthString) > 1
THEN LEFT(DaysOfMonthString,
LEN(DaysOfMonthString) - 1)
ELSE ''
END + ' of ' + MonthString + StartEndString
WHEN RecurrenceType = 6
THEN 'At ' + StartTime + ' on the ' + MonthlyWeekString
+ ' '
+ CASE WHEN LEN(DaysOfWeekString) > 1
THEN LEFT(DaysOfWeekString,
LEN(DaysOfWeekString) - 1)
ELSE ''
END + ' of ' + MonthString + StartEndString
ELSE 'At ' + SUBSTRING(CONVERT(VARCHAR, StartDate, 8), 0,
6) + ' '
+ SUBSTRING(CONVERT(VARCHAR, StartDate, 109), 25, 2)
+ StartEndString
END ScheduleTextDefinition
FROM
EnhancedSched
)
SELECT
*
-- This has the same columns as the native [dbo].Schedule table plus a field called "SheduleTextDefinition"
-- You can use "SuperEnhancedSchedule" in place of the usual SSRS.Schedule table, joining to subscriptions and such.
FROM
SuperEnhancedSchedule
关于reporting-services - SSRS 2008 R2 从 ReportServer DB 获取人类可读的计划信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8334642/
我有一个大型 SSRS 2008 服务器报告项目(超过 200 个报告)。目前我公司的策略已经改变,我们希望将这些服务器报告转换为客户端报告。 所有服务器报告都使用存储过程(或在某些情况下来自 SQL
我有一个 SSRS 2008 R2 报告,它在表格中使用了这个表达式: =Lookup(Fields!DataSet1Date.Value, Fields!DataSet2Date.Value, Fi
我在 SSRS 报告上有一个 tablix,它从存储过程中获取数据。 当没有数据存在时,我试图向用户显示一条消息,例如“**此报告没有数据* ”。我可以通过在 **NoRowsMessage 中指定此
我试图让这个专栏聊天的标 checkout 现在专栏基地,就像下面的第二张图片一样。然而,该解决方案并不完全有效,因为它歪曲了其余信息。 有没有人知道实现这一目标的适当方法,这不是直截了当的,这很令人
如何获取 SSRS 报告以显示网页 View ? 当我转到 SSRS 报告页面时,它没有显示网页 View 。它显示了数据源、数据集和报告文件夹的列表。 进入报告文件夹后,我可以通过单击它们来调用报告
我正在寻找一种方法来从我的 SSRS 报告中获取版本信息。我有几个环境,希望能够比较在这些环境中部署了哪个报告版本。在 SSIS 中,这非常容易,因为每个 SSIS 包在修改和保护后都会获得一个新版本
我有一个作为 SSRS 报告后端运行的存储过程(它对值进行透视和反透视)。用户提供 2 个输入(BeginRange 和 EndRange)。 结果会根据用户输入而变化,因此我也需要在报告中反射(re
我一直在网上寻找一种在 SSRS (2008 R2) 中完全组合数据集的方法。 基本上,我需要创建一个由多个不同数据集(都具有如下相同的列)组成的表和图,这些数据集是从多个 sql 服务器检索的(防止
我有一份包含多个数据集的报告。不同数据集中的不同字段用于报告的不同位置。 在报告的一部分中,我需要使用两个不同数据集中的字段进行计算。这在表达式中可能吗? 我可以以某种方式在表达式中引用该字段所在的数
我在 Business Intelligence Studio 2008 中内置了一个 RDL 报告,但遇到了不需要的分页符问题。 我有一个数据集,其中包含一个带有一些汇总数据的单表。我已经添加了一个
解决方案 SSRS - How to build a simple multi-column report? 表示报表属性下有一个布局选项卡。我已经用谷歌搜索了这个主题,并且在多个地方都提到了相同的菜
我在 Sql Server Reporting Services (SSRS) 2008 R2 中运行报表时遇到问题。 在设置站点、创建一些用户并上传一些报告之后,我选择了一个要运行的报告,输入我的参
我有一个包含多个行组的矩阵的 SSRS (2008 R2) 报告。我需要扩展所有其他组,同时只有一个切换项。我隐藏所有必要的组,并在我需要的文本框中设置切换项。它在 VisualStudio 中运行良
我在 SSRS 中有报告,我可以使用以下表达式交替行颜色: =IIF(ROWNUMBER(NOTHING) MOD 2, "LightSteelBlue","WhiteSmoke") 这很好用。但是,
啊啊! 受不了,我自己也想不通...... 我在报告中的数字格式中使用了它: '€' #,0.00;('€' #,0.00) 格式为 € 1,212.89 这不完全是我想要的,因为我想要 € 1.21
我有一个简单的 SSRS 报告,显示一个表中的数据。我想要做的是在下拉列表中显示与该表不同的列表,供用户选择。如果我只使用一个数据集,我可以让它显示,但它会多次显示该列中的值。 示例 Bob Bob
SSRS 2008 已经运行了很长时间。 我们已经在同一台服务器上安装了 SSRS 2012,它似乎有点破坏了 SSRS 2008 共享点模式。 所有 .rdl 和 .rsds 文件不再与服务器“关联
我们正在从 Crystal Reports 迁移我们的报告至 SSRS .在 Crystal 报表中,我们使用 变量 至 动态 生成我们的文件名,以便当报告通过电子邮件发送时,文件具有报告名称和执行日
我想将一些文本加粗并加下划线,如果我的数据库中的字段值为“HD” 我的意思是,我在数据库中有两个文件。文本 1 和标题。我在报告中显示 Text1,如果 Header 的值为“HD”,则 Text1
我正在使用 BIDS 和 SQL Server Reporting Services (SSRS) 2008 R2 来构建报告。我希望每个类别都显示为单独的表格/网格。 重要提示:列(CELERY、E
我是一名优秀的程序员,十分优秀!