- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在 SQL Server 2012 中工作。我有 3 个表。第一个是“时间表”表。其结构如下:
CREATE TABLE schedule
(
JobID int
,BeginDate date
,EndDate date
)
一些示例数据是:
INSERT INTO schedule
SELECT 1, '2017-01-01', '2017-07-31' UNION ALL
SELECT 2, '2017-02-01', '2017-06-30'
第二个是“频率”表。其结构如下:
CREATE TABLE frequency
(
JobID int
,RunDay varchar(9)
)
一些示例数据是:
INSERT INTO frequency
SELECT 1, 'Sunday' UNION ALL
SELECT 1, 'Monday' UNION ALL
SELECT 1, 'Tuesday' UNION ALL
SELECT 1, 'Wednesday' UNION ALL
SELECT 1, 'Thursday' UNION ALL
SELECT 1, 'Friday' UNION ALL
SELECT 1, 'Saturday' UNION ALL
SELECT 2, 'Wednesday'
第三个是“日历”表。其结构如下:
CREATE TABLE calendar
(
CalendarFullDate date
,DayName varchar(9)
)
我的目标是“取消透视”计划表,以便为每个 JobID 的跨越 BeginDate 和 EndDate 日期范围的每个日期创建一行。这些行必须与每个 JobID 的频率表中的天数匹配。
到目前为止,每项工作的日期频率都是每天或每周。为此,我使用以下 SQL 来生成我想要的表:
SELECT
s.JobID
,c.CalendarFullDate
FROM
schedule AS s
INNER JOIN
calendar AS c
ON
c.CalendarFullDate BETWEEN s.BeginDate AND s.EndDate
INNER JOIN
frequency AS f
ON
f.JobID = s.JobID
AND f.RunDay = c.DayName
这不适用于高于每周(例如,每两周)的频率。为此,我知道我的频率表需要更改结构。特别是,我必须添加一列给出频率(例如,每天、每周、每两周)。而且,我打赌我还需要在日历表中添加周数列。
如何生成所需的表格以容纳至少每两周一次的频率(如果不是更高的频率)?例如,如果 JobID = 3 是一个在星期三运行的双周作业,并且它受 BeginDate = '2017-06-01' 和 EndDate = '2017-07-31' 的约束,那么对于此作业,我会预期结果如下:
JobID Date
3 2017-06-07
3 2017-06-21
3 2017-07-05
3 2017-07-19
最佳答案
我更改了时间表而不是频率表。我添加了一个 SkipWeeks 字段,该字段应设置为 1 表示每两周一次,设置为 2 表示每三周运行一次作业,等等。我使用了表值函数来返回正确的日期。我想这就是你想要的。
CREATE TABLE dbo.schedule
(
JobID int
,BeginDate date
,EndDate date
,SkipWeeks tinyint default 0
)
GO
INSERT INTO dbo.schedule
(JobID,BeginDate,EndDate)
SELECT 1, '2017-01-01', '2017-07-31' UNION ALL
SELECT 2, '2017-02-01', '2017-06-30'
GO
CREATE TABLE dbo.frequency
(
JobID int
,RunDay varchar(9),
primary key (
JobID,
RunDay
)
)
GO
INSERT INTO dbo.frequency
SELECT 1, 'Sunday' UNION ALL
SELECT 1, 'Monday' UNION ALL
SELECT 1, 'Tuesday' UNION ALL
SELECT 1, 'Wednesday' UNION ALL
SELECT 1, 'Thursday' UNION ALL
SELECT 1, 'Friday' UNION ALL
SELECT 1, 'Saturday' UNION ALL
SELECT 2, 'Wednesday'
GO
CREATE FUNCTION dbo.DateRangeTable(@pdStartDate date, @pdEndDate date, @piSkipWeeks tinyint)
RETURNS
@dates TABLE
(
[Date] date primary key,
DayName varchar(9)
)
AS
BEGIN
declare @ldDate date = @pdStartDate
declare @skipDecr smallint = @piSkipWeeks
while (@ldDate <= @pdEndDate) Begin
if @skipDecr = 0 Begin
insert into @dates
select @ldDate, format(@ldDate,'dddd')
End
--Start of New week? (% = MOD)
if datediff(d,@pdStartDate,@ldDate) % 7 = 0 Begin
if @skipDecr = 0 Begin
set @skipDecr = @piSkipWeeks
End else Begin
set @skipDecr = @skipDecr - 1
End
End
set @ldDate = dateadd(D,1, @ldDate)
End
RETURN
END
GO
INSERT INTO dbo.schedule
(JobID,BeginDate,EndDate,SkipWeeks)
SELECT 3, '2017-06-01','2017-07-31',1
GO
INSERT INTO dbo.frequency
SELECT 3, 'Wednesday'
GO
SELECT
s.JobID
,c.[Date]
FROM dbo.schedule AS s
cross apply dbo.DateRangeTable(s.BeginDate, s.EndDate, s.SkipWeeks) c
INNER JOIN dbo.frequency AS f
ON f.JobID = s.JobID
AND f.RunDay = c.DayName
GO
关于sql-server - SQL : generate schedule table with different frequencies,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45425388/
我正在编写一个需要检测音频流中的频率的应用程序。我已经阅读了大约一百万篇文章,但在越过终点线时遇到了问题。通过 Apple 的 AVFoundation Framework,我可以通过此功能获得音频数
在一款RPG游戏中,假设有角色A和B。 A每秒将进行x次攻击 B每秒将进行y次攻击 如果我们假设 A 发起攻击,最终的攻击可能是: A A B A B ... 如何计算攻击顺序? 最佳答案 这是在 P
我正在为微 Controller 编写音调发生器程序。 我使用硬件计时器触发中断,并检查是否需要在特定时刻针对给定音符将信号设置为高电平或低电平。 我使用的硬件非常有限,所以我运行计时器的速度越慢,我
我在文本文件中有 500 个数值(范围从 1 到 25000)的原始观察,我想在 MATLAB 中进行频率分布。我确实尝试了直方图 (hist),但是我更喜欢频率分布曲线而不是 block 和条。 感
我正在学习Clojure,我在网上看到了这段代码: (count (filter #{42} coll)) 正如所述,它确实计算了 coll 中数字 42 的出现次数。 #{42} 是一个函数吗?关于
我想使用tf-idf计算词频。我起草了一个方程式,您应该在左侧获取tf-idf值。这样对吗? DOCUMENT的TF-IDF: tf-idf(WORD) = occurrences(WORD,DOCU
我正在使用 Stanford NLP Parsing 工具包。给定词典中的一个词,我如何找到它的频率*?或者,给定一个频率排名,我如何确定相应的词? *在整个语言中,而不仅仅是文本示例。 这是我正在使
public class ArrayStudentPoll { public static void main( String args[] ) { // array o
我想计算字典中每个值的数量,并构造一个以值作为键的新值,以及以所述值作为值的键列表。 Input : b = {'a':3,'b':3,'c':8,'d':3,'e':8} Output: c = {
此代码打印值“0”: String name = "aaa"; char[] mychar = new char[name.length()]; mychar = name.toCharArray()
那么,假设我有以下列表: List myList = getListFromSomePlace(); int frequency = Collections.frequency(myList, som
我有一个 list 要画。有没有办法显示部分 x 轴标签,例如 x[0], x[10], ...,但保持图形不变? x = ['alice', 'bob', ...] # string list, l
对于 Azure 搜索服务,我希望获得最接近实时的更新。我可以使用循环逻辑应用程序通过 REST API 执行它。 如果我非常频繁地调用逻辑应用程序(每 3 秒一次)。这种方法有什么问题吗? 索引器会
在 Excel 2010 中,A 列中有一个值列表,并且在 B1 中指定了 bin 大小。这允许我使用以下公式创建具有 N 个箱的直方图: {=频率(A:A,(ROW(INDIRECT("1:"&CE
具有以下功能: =FREQUENCY(C2:C724,D2:D37) 第二个参数是BIN 我不明白的是为什么 Excel 会增加其余值的 BIN。 BIN 没有改变!它保持同一个垃圾箱。然而,当我粘贴
为了简化我正在做的事情,让我们使用 learnfromexamples.com 中的示例我修改了一些位。 package test; import java.util.StringTokenizer;
有人可以向我解释一下,为了将这些元素添加到我的库存数组列表中,我做错了什么吗?问题是当我用 Collections.frequency 检查某个商品的库存时它继续说该项目的数量为零。 private
我正在尝试通过 android 设备的音频端口传输一些数据,我正在使用 FSK(频移键控)我正在使用两个不同的频率来表示 1 和 0。是否有任何 android 库或示例代码来 FSK 解码捕获的音频
我正在用 Java 实现“经验模式分解”。下一步是希尔伯特-黄变换,我需要找到如何获得“瞬时频率”。有人知道如何获得吗? 使用 EMD 方法,任何复杂的数据集都可以分解为有限且通常数量较少的分量,即固
我过去使用过 Collections.frequency 并且工作正常,但我现在遇到了问题,因为我使用的是 int[]。 基本上 Collections.frequency 需要一个数组,但我的数据是
我是一名优秀的程序员,十分优秀!