2016-04-02 4 views
-1

Привет Мне нужно сравнить две даты из разных таблиц и отображать данные, если даты тот жеSQL Как сравнить две даты из разных таблиц и отображать информацию только если даты одинаковы

Select f.AbsenceDate, st.StudentLastName, stc.CourseDate, c.CourseTitle, 
case when f.AbsenceDate=stc.CourseDate then'missing' 
else 'not the same date' End as 'date info' 
from factAbsence as f 
Join dimStudent as st 
on f.StudentID=st.StudentID 
Join factStudentCourse as stc 
on st.StudentID=stc.StudentID 
Join dimCourse as c 
on stc.CourseID=c.CourseID 
order by f.AbsenceDate desc, CourseDate desc; 

Благодаря

ответ

0

Привет для сравнения даты заключается в следующем:

where datediff(minute,SendDate,getdate())<=0 
0

Ну, во-первых, я хотел бы предложить вам хранить даты в INT в ваших таблицах (ГГГГММДД, например, 20140301) если вы планируете иметь на них условие JOIN. Затем просто нажмите INNER JOIN на два столбца даты двух таблиц и отобразите требуемую информацию.

0

Вероятно, вы получаете слишком много или только недостающие результаты, потому что соединения работают неправильно? Попробуйте это (вы также можете использовать EXISTS вместо IN), вам не обязательно входить в таблицу FactAbsence.

SELECT st.StudentLastName, stc.CourseDate, c.CourseTitle, 
    CASE WHEN stc.CourseDate IN (
     SELECT AbsenceDate FROM FactAbsence WHERE studentID = stc.StudentID 
    ) THEN'missing' 
    ELSE 'attended' 
    END date_info 
FROM dimStudent st JOIN 
    factStudentCourse stc ON st.StudentID = stc.StudentID JOIN 
    dimCourse c ON stc.CourseID=c.CourseID 
ORDER BY stc.CourseDate DESC; 
Смежные вопросы