У меня есть столбец с именем DayShift
в таблице типа данных Yes/No
(логический).Вывод результата, который я хочу получить: если значение равно true, отобразить «Day», иначе отобразить night.
Я пробовал следующее:
SELECT iif(DayShift=Yes,"Day","Night") as Shift FROM table1;
SELECT iif(DayShift,"Day","Night") as Shift FROM table1;
SELECT iif(DayShift=True,"Day","Night") as Shift FROM table1;
SELECT iif(DayShift=1,"Day","Night") as Shift FROM table1;
Но ничего из вышеперечисленного не работает.Это просто дает мне список пустых флажков в окне выходных данных.Я использую MS Access 2003. Любая помощь приветствуется.
Обновление:
После небольшого исследования, что тип данных да / нет в Ms Access 2003 не может обрабатывать нулевые значения надлежащим образом.Отсюда и ошибка. Проверьте эту ссылку для подробностей.
Обновление 2
Реальный запрос с объединениями.Не упомянул об этом, так как я, хотя приведенная выше информация будет работать.
SELECT tblovertime.contfirstname AS [First Name],
tblovertime.contlastname AS [Last Name],
tblovertime.employeenumber AS [Employee Number],
tblsignup.thedate AS [Sign Up Date],
Iif([tblOvertime.DayShift] =- 1, "Day", "Night") AS shift,
(SELECT Mid(MIN(Iif(sector = 1, "," & sector, NULL)) & MIN(
Iif(sector = 2, "," & sector, NULL)) & MIN(
Iif(sector = 3, "," & sector, NULL)) & MIN(
Iif(sector = 4, "," & sector, NULL)), 2) AS concat
FROM tblempsectorlist
WHERE tblempsectorlist.empnum = tblsignup.employeenumber
GROUP BY empnum) AS sectors,
tblovertime.timedatecontact AS [Date Contacted],
tblovertimestatus.name AS status
FROM (tblsignup
INNER JOIN tblovertime
ON ( tblsignup.thedate = tblovertime.otdate )
AND ( tblsignup.employeenumber = tblovertime.employeenumber ))
INNER JOIN tblovertimestatus
ON Clng(tblovertime.statusid) = tblovertimestatus.statusid
WHERE (( ( tblsignup.thedate ) ># 1 / 1 / 2011 # ))
ORDER BY tblsignup.thedate;