以下SQL查詢應顯示教師可用性。有3種可能的預訂類型 - 上午,下午或全天。如果是AM預訂,則單元格中的文本應顯示PM,如果是PM預訂,則應顯示AM,如果是全天預訂,或AM和PM預訂都顯示爲「xxx」。MIN的替代選擇多個行
這一切工作正常時,上午1時,下午1或1整天預訂,但如果上午1點和下午1點在同一天,它不會顯示XXX,因爲我使用MIN()。我怎樣才能在一天內評估所有預訂,而不是最小的預訂? (你可以看到我試圖說明我的意思上的代碼,週四部分
SQL:
with CTE_D as
(
SELECT
DATEADD(ww, DATEDIFF(ww,0,GETDATE()), 0) as BookingDate
UNION ALL
SELECT
DATEADD(day, 1, BookingDate)
FROM
CTE_D
WHERE
BookingDate < DATEADD(ww, DATEDIFF(ww,0,GETDATE()), 6)
)
SELECT
t.ID, t.Firstname,
t.Surname, tb.Band, t.Telephone, t.Mobile, t.Teacher, t.TeacherAssistant, t.PrimarySchool, t.SecondarySchool,
MIN(CASE WHEN bd.DayText = 'Monday' AND bd.BookingDuration = 0 THEN 'PM' ELSE 'Full Day' END) "Monday",
MIN(CASE WHEN bd.DayText = 'Tuesday' AND bd.BookingDuration = 0 THEN 'PM' ELSE 'Full Day' END) "Tuesday",
MIN(CASE WHEN bd.DayText = 'Wednesday' AND bd.BookingDuration = 0 THEN 'PM' ELSE 'Full Day' END) "Wednesday",
MIN(CASE WHEN bd.DayText = 'Thursday' AND bd.BookingDuration = 0 THEN 'PM' WHEN bd.DayText = 'Thursday' AND bd.BookingDuration = 1 THEN 'AM' WHEN bd.DayText = 'Thursday' AND bd.BookingDuration = 2 or (bd.BookingDuration = 1 and bd.BookingDuration = 0) THEN 'xxx' END) "Thursday",
MIN(CASE WHEN bd.DayText = 'Friday' AND bd.BookingDuration = 0 THEN 'PM' ELSE 'Full Day' END) "Friday",
Notes
FROM Teachers t
cross join CTE_D d
left join BookingDays bd
on t.ID = bd.TeacherID and
bd.BookingDate = d.BookingDate
left join BookingDurations bds
on bd.BookingDuration = bds.ID
left join TeacherBands tb on t.Band = tb.ID
WHERE t.Active = 0 and (t.Status = 0 or t.Status = 1) and (bd.Status = 0 or bd.Status IS NULL) and PrimarySchool = 1
GROUP BY Firstname, Surname, t.Telephone, t.Mobile, t.Notes, tb.Band, t.ID, t.Teacher, t.TeacherAssistant, t.PrimarySchool, t.SecondarySchool, t.Nursery, t.Reception, t.Year1, t.Year2, t.Year3, t.Year4, t.Year5, t.Year6, t.Year7, t.Year8, t.Year9, t.Year10, t.Year11, t.ALevel
ORDER BY Surname, Firstname ASC
表列:
ID | Firstname | Surname | Band | Telephone | Mobile | Teacher | Teacher Assistant | PrimarySchool | SecondarySchool | KeyStage | Mon | Tues | Wed | Thurs | Fri | Notes
謝謝,馬特
該代碼看起來不完整先生,代碼顯示「XXX」只存在對於星期四... – Raad 2013-02-14 15:20:46
不確定你的意思,那是完整的代碼,它運行良好?只是沒有顯示週一到週五需要什麼。週四僅顯示xxx的代碼僅在週四發佈。我正在測試星期四專欄。一旦我對它進行了整理,我會在其他日子複製修復程序。 – dynamicuser 2013-02-14 15:22:17
好吧,我看你做了什麼 - 第一行的縮進看起來很奇怪。 – Raad 2013-02-14 15:23:57