【问题标题】:How to do double comparison on a table如何在表格上进行双重比较
【发布时间】:2012-09-18 20:41:38
【问题描述】:

我需要将一列 LeadDate(数据类型为 datetime )与保存在另一个表(名为 EmployeeWorkTime)中的值进行比较。 LeadDate 列的格式类似于“2006-08-08 11:50:51.000”。

员工工作时间表是这样的:

SyStaffId       Associate Name           Monday    Tuesday  Wednesday Thursday   Friday    Saturday        Sunday
34128           Natasha Dawson            0919      0918      0920      0918      0918      WKEND           WKEND    
34169           Elaine Bueno              0918      1019      0918      1019      0918      WKEND           WKEND    
34385           Aida Rodriguez            0918      1019      0918      1019      0918      WKEND           WKEND    
34419           Sy Lim                    1019      1019      1019      1019      0918      WKEND           WKEND     

我创建了一个视图并包含了比较所需的所有字段。新视图如附件所示。但是当我想将提前期与时间列中的值进行比较时。我遇到了一些困难。由于提前期不同,它们位于 DayofWeekName 列中,我想将提前期与仅与提前期相同的一列进行比较。我该怎么做?

例如,对于第一个潜在客户,dayofweekname 是 Thursay,并且我想将作为 Leadhour 列的 Leadtime 列复制到 Thursday 列,我该如何编写代码来实现它。

非常感谢。

用于创建新视图的命令:

Create View dbo.cstAdmissionDailyReportLeadCount_jy
AS
SELECT     dbo.syStudent.AmRepID, dbo.syStudent.LeadDate, DATEPART(dw, syStudent.LeadDate) AS DayofWeekNumber, DATEPART(hh, syStudent.LeadDate)
                      AS LeadHour, dbo.EmployeeWorkTime.[Associate Name], DATENAME(dw, syStudent.LeadDate) AS DayofWeekName, EmployeeWorkTime.Monday,
                      EmployeeWorkTime.Tuesday, EmployeeWorkTime.Wednesday, EmployeeWorkTime.Thursday, EmployeeWorkTime.Friday,
                      EmployeeWorkTime.Saturday, EmployeeWorkTime.Sunday, CASE WHEN DATEPART(hh, syStudent.LeadDate)
                      < 18 THEN 1 ELSE 0 END AS CountAsEffectiveLead
FROM         dbo.syStudent INNER JOIN
                      dbo.EmployeeWorkTime ON dbo.syStudent.AmRepID = dbo.EmployeeWorkTime.SyStaffId 

【问题讨论】:

    标签: sql tsql


    【解决方案1】:

    将其添加到您的选择子句有帮助吗?

    case when DATENAME(dw, syStudent.LeadDate) = "Monday" then EmployeeWorkTime.Monday
    when DATENAME(dw, syStudent.LeadDate) = "Tuesday" then EmployeeWorkTime.Tuesday
    when DATENAME(dw, syStudent.LeadDate) = "Wednesday" then EmployeeWorkTime.Wednesday
    when DATENAME(dw, syStudent.LeadDate) = "Thursday" then EmployeeWorkTime.Thursday
    when DATENAME(dw, syStudent.LeadDate) = "Friday" then EmployeeWorkTime.Friday
    when DATENAME(dw, syStudent.LeadDate) = "Saturday" then EmployeeWorkTime.Saturday
    else EmployeeWorkTime.Sunday end as ewt_day
    

    【讨论】:

      猜你喜欢
      • 2020-07-19
      • 2012-10-09
      • 1970-01-01
      • 2011-08-02
      • 2019-01-10
      • 1970-01-01
      • 2022-10-01
      • 2014-05-06
      • 1970-01-01
      相关资源
      最近更新 更多