Я получил следующий запрос, и я хочу подсчитать EAMDATE, когда EAMATTNSTATUS = 7 или 8, равный 0,5, и подсчитайте EAMDATE, когда EAMATTNSTATUS = 6 как один.как считать без дубликатов?
SELECT EAMEMID,
SUM(CASE WHEN EAMATTNSTATUS in (7) OR EAMATTNSTATUS in (8) THEN 1 ELSE 0 END)/2 + COUNT(DISTINCT CASE WHEN EAMATTNSTATUS in (6) THEN EAMDATE END) as ABSENTDAYS
FROM viewDAILYSUM
WHERE (EAMEMID = :EAMEMID) AND
(EAMDATE between :FDate and :TDate)
GROUP BY EAMEMID
ORDER BY EAMEMID
трудная часть для меня, что это какой-то ситуации, что один EAMDATE может иметь EAMATTNSTATUS = 7 или 8 Статус и EAMATTNSTATUS = 6. Это означает, что он будет дублировать подсчет для этого EAMDATE дважды, потому что он имеет статус 2.
как я могу исправить дубликат ??
я пытался использовать Distinct но не работал ...
любая идея ??!
Благодаря
SAMPLE DATA
EAMEID | EAMDATE | EAMATTNSTATUS|
------ | --------| -------------|
161 |20/7/2016| 6 |
161 |20/7/2016| 7 |
161 |21/7/2016| 6 |
161 |22/7/2016| 5 |
161 |23/7/2016| 8 |
CURRENT OUTPUT
EAMEID | EAMDATE | ABSENTDAYS |
------ | --------| -------------|
161 |20/7/2016| 1 |
161 |20/7/2016| 0.5 |
161 |21/7/2016| 1 |
161 |22/7/2016| 0 |
161 |23/7/2016| 0.5 |
WANTED RESULT
EAMEID | EAMDATE | ABSENTDAYS |
------ | --------| -------------|
161 |20/7/2016| 0.5 |
161 |21/7/2016| 1 |
161 |22/7/2016| 0 |
161 |23/7/2016| 0.5 |
Выборочные данные и ожидаемый результат .. Похоже каверзный вопрос мне –
Здравствуйте, я добавил необходимую информацию, ожидая ваш комментарий ,, Thanks – Majed