3

1 つの列 LeadDate (データ型は datetime ) を別のテーブル (EmployeeWorkTime という名前) に保存された値と比較する必要があります。LeadDate 列の形式は、「2006-08-08 11:50:51.000」のようになります。

employeeworktime テーブルは次のようになります。

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 にあり、リードタイムをリード日と同じ 1 つの列のみと比較したいと考えています。どうすればそれができますか?

たとえば、最初のリードの場合、dayofweekname は Thursay です。リードタイムの​​列であるリードタイムを木曜日の列に合わせたいのですが、それを達成するためのコードをどのように記述すればよいでしょうか。

どうもありがとうございました。

新しいビューの作成に使用されるコマンド:

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 
4

1 に答える 1

0

これをselect句に追加すると役立ちますか?

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
于 2012-09-18T21:05:55.153 に答える