2013-05-28 2 views
0

Я очень мало знаю о MS-SQL, но мне нужно выполнить отчет.Функция поиска и сравнения SQL

Я этот вопрос:

Select 
a.HPD_CI as HPD_CI_Grouped, 
count(a.HPD_CI) as HPDCant, b.submit_date 
    From 
    HPD_Help_Desk a, Tiempos_Grupos b--, Tiempos_grupos b 
    GROUP BY a.HPD_CI, b.submit_date 

И результат этого:

HPD_CI_GROUPED HPDCant SUBMIT_DATE 
ADSL1   1 2013-04-10 19:22:59.0 
ENL001   4 2013-04-10 19:22:59.0 
OSE001  18 2013-04-10 19:22:59.0 
OSE002   9 2013-04-10 19:22:59.0 
OSE003   1 2013-04-10 19:22:59.0 
REF0001  44 2013-04-10 19:22:59.0 
REF0002  11 2013-04-10 19:22:59.0 
REF0003  8 2013-04-10 19:22:59.0 

На самом деле то, что я делаю подсчет, но что мне нужно, чтобы сравнить с SUBMIT_DATE следующий, и COUNT только ЕСЛИ следующий submit_date существует между определенным диапазоном (дней).

Предположим, что я определил «6 дней» ... Я обнаружил, что OSE001 имеет 2013-04-10 19: 22: 59.0 as submit_date, если в период между 2013-04-10 19: 22: 59.0 и другой OSE001 2013-04-16 19: 22: 59.0, тогда он должен рассчитывать, иначе нет.

Это может быть что-то подобное:

COUNT(CASE Submit_Date - **NEXT**submit_date < 6 days then 1 else 0 end) 

(разумеется, что пример не работает, потому что я не знаю, как назвать * СЛЕДУЮЩИЙ * дата)

+1

Не должно ли вы иметь какое-либо условие соединения в предложении 'from'? –

+0

Потому что я не слишком много знаю о SQL. Я не знал об этом. Благодаря! – user2430140

ответ

0

Я могу» т сказать из вашего вопроса, если у вас есть две таблицы уже или нет, но идея что-то вроде этого:

SELECT a.HPD_CI as HPD_CI_Grouped 
     ,a.submit_date 
     ,COUNT(*) 
FROM HPD_Help_Desk a 
JOIN Tiempos_Grupos b 
    ON a.HPD_CI = b.HPD_CI 
    AND b.submit_date BETWEEN a.submit_date AND DATEADD(DAY,6,a.submit_date) 
GROUP BY a.HPD_CI, a.submit_date 

Использование BETWEEN в соединении критериев позволяет вы должны отбросить каждую строку в течение 6 дней для того же значения HPD_CI.

+0

Большое спасибо! Ты спас мне головную боль! – user2430140

Смежные вопросы