复杂(对我来说)根据有多少人按时间表记录 [英] complex (for me anyway) put records on schedule based on how many

查看:125
本文介绍了复杂(对我来说)根据有多少人按时间表记录的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将预定事件从sql放入salesforce。如果小于24,我希望每小时出现一个事件。我只能在一天内完成这么多事情。如果有超过24个事件,我想每小时加倍。如果有更多的48我想每小时
三倍。这是我所拥有的,但是当它安排好几个事件时它会泄漏到第二天。如果超过24小时,如果每小时24小时以上,我怎么能每小时出现两个或3个事件呢?我不希望他们在第二天流血。


with chk

as b


 选择不同的s.company,s.Loc_No,s.Pay_Date

  ;,当i.Pay_Date为空时为1,否则为0结束为已付款为
  FROM [DHRDataWarehouse]。[dbo]。[DW_CL_Scheduled] s

 左连接[DHRDataWarehouse]。[dbo]。[DW_PR_Invoi] i on i.company = s.company and i.Loc_No = s.Loc_No和s.Pay_Date = i.Pay_Date

  WHERE s.year =年(GetDate())和s.Pay_Date介于DATEADD(day,-7,GetDate())和DATEADD之间(日,-1,GetDate()) 



 和i.Pay_Date为空

  

) 

 

  SELECT [DHRClientId]

,[pkUniqueID]

,名称

,[company]

,[Loc_No]

,[Div_No]

,[Pay_Date]

,Coalesce(已付款,0)为已错过$
,[Recv_Date]

,[Ship_Date] 

,RunDate

,[StartDate] = DATEADD(小时,1 * ([Seq] - 1),[StartDate])

,[EndDate] = DATEADD(小时,1 * [Seq] ,[StartDate])

,[Freq]

,[Run_Oper]

,[Per_End]

,[Per_Start]

,[Ship_Meth]

,[评论]

,[Recv_Meth ]¥b $ b ,[Per_In_Mo]

,[Pay_Group]

,[Check_Date]

,[已处理] ]¥b $ b ,s。[额外]

FROM



SELECT distinct 

s。[pkUniqueID]

,右('00 '+ CAST([s]。[company] AS VARCHAR(2)),2)+ RIGHT('0000'+ CAST([s]。[Loc_No] AS VARCHAR(4)),4)AS [DHRClientID]

  ,c.Name

      ,s。[公司]

      ,s。[Loc_No]

      ,s。[Div_No]

      ,s。[Pay_Date]

  ,i.paid

      ,[Recv_Date]

      ,[Ship_Date]

  ,Run_Date作为RunDate

  ,Run_Date为[StartDate]

  ,s。[Freq]

      ,[Run_Oper]

      ,s。[Per_End]

      ,s。[Per_Start]

      ,[Ship_Meth]

      ,[评论]

      ,[Recv_Meth]

      ,[Per_In_Mo]

      ,[Pay_Group]

      ,[Check_Date]

      ,[已处理]

      ,s。[额外]

  ,ROW_NUMBER()OVER([run_Oper]分区,[Run_Date]

  ORDER BY RIGHT('00'+ CAST ([s]。[company] AS VARCHAR(2)),2)+ RIGHT('0000'+ CAST([s]。[Loc_No] AS VARCHAR(4)),4))AS [Seq]

FROM [DHRDataWarehouse]。[dbo]。[DW_CL_Scheduled] [s]

加入c.company = s.company上的DHRDataWarehouse.dbo.DW_CL_Mast c和c.Loc_No = s.Loc_No

在i.company = s.company和i.Loc_No = s.Loc_No和s.Pay_Date = i.Pay_Date左边加入chk i&
WHERE s.year =年(GetDate())和[Run_Date]介于DATEADD(day,-7,GetDate())和DATEADD(day,30,GetDate())之间
和c.Yn_17 ='A'

)[s];

  

GO



解决方案

尝试 让你的榜样尽可能小。仅包含问题的重要列。创建一些测试数据,作为帖子的一部分,以便我们可以在我们的SQL Server上运行它。制作一个自包含的迷你示例。然后告诉我们你想要输出的


I am trying to put scheduled events into salesforce from sql. I want one event to show up per hour if less than 24. I can only fit so many into a day. if there are more than 24 events, I want to double them per hour. if there are more that 48 I want to triple per hour. Here is what I have but it leaks into the next day when several events are scheduled. How can I make two or 3 events show up per hour if there are 24 and more per hour if they are exceed 24? I don't want them to bleed over into the next day.

with chk
as
(
  select distinct s.company, s.Loc_No, s.Pay_Date
  ,case when i.Pay_Date is null then 1 else 0 end as paid
  FROM [DHRDataWarehouse].[dbo].[DW_CL_Scheduled] s
  left join [DHRDataWarehouse].[dbo].[DW_PR_Invoi] i on i.company = s.company and i.Loc_No = s.Loc_No and s.Pay_Date = i.Pay_Date
  WHERE s.year = Year(GetDate()) and s.Pay_Date between DATEADD(day,-7,GetDate()) and DATEADD(day,-1,GetDate()) 

  and i.Pay_Date is null
  

 
 SELECT [DHRClientId]
,[pkUniqueID]
,Name
,[company]
,[Loc_No]
,[Div_No]
,[Pay_Date]
,Coalesce(paid,0) as Missed
,[Recv_Date]
,[Ship_Date] 
,RunDate
,[StartDate] = DATEADD(hour, 1 * ([Seq] - 1), [StartDate])
,[EndDate] = DATEADD(hour, 1 * [Seq], [StartDate])
,[Freq]
,[Run_Oper]
,[Per_End]
,[Per_Start]
,[Ship_Meth]
,[Comments]
,[Recv_Meth]
,[Per_In_Mo]
,[Pay_Group]
,[Check_Date]
,[Processed]
,s.[Extra]
FROM
(
SELECT distinct 
s.[pkUniqueID]
,RIGHT('00' + CAST([s].[company] AS VARCHAR(2)), 2) + RIGHT('0000' + CAST([s].[Loc_No] AS VARCHAR(4)), 4) AS [DHRClientID]
  ,c.Name
      ,s.[company]
      ,s.[Loc_No]
      ,s.[Div_No]
      ,s.[Pay_Date]
  ,i.paid
      ,[Recv_Date]
      ,[Ship_Date]
  ,Run_Date as RunDate
  ,Run_Date as [StartDate]
  ,s.[Freq]
      ,[Run_Oper]
      ,s.[Per_End]
      ,s.[Per_Start]
      ,[Ship_Meth]
      ,[Comments]
      ,[Recv_Meth]
      ,[Per_In_Mo]
      ,[Pay_Group]
      ,[Check_Date]
      ,[Processed]
      ,s.[Extra]
  ,ROW_NUMBER() OVER(PARTITION BY [run_Oper],[Run_Date]
  ORDER BY RIGHT('00' + CAST([s].[company] AS VARCHAR(2)), 2) + RIGHT('0000' + CAST([s].[Loc_No] AS VARCHAR(4)), 4)) AS [Seq]
FROM [DHRDataWarehouse].[dbo].[DW_CL_Scheduled] [s]
Join DHRDataWarehouse.dbo.DW_CL_Mast c on c.company = s.company and c.Loc_No = s.Loc_No
left join chk i on i.company = s.company and i.Loc_No = s.Loc_No and s.Pay_Date = i.Pay_Date
WHERE s.year = Year(GetDate()) and [Run_Date] between DATEADD(day,-7,GetDate()) and DATEADD(day,30,GetDate())
and c.Yn_17 = 'A'
) [s];
  
GO

解决方案

Try to  make your example as small as possible. Only include the important columns for your issue. Create some test data, as part of your post, so that we can run it on our SQL Server. Make a self contained mini example. Then tell us what you want the output to be.


这篇关于复杂(对我来说)根据有多少人按时间表记录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆