Мне нужно сделать довольно сложный запрос, и мне нужна плохая помощь. Ниже приведен пример, который я сделал.
В основном мне нужен запрос, который будет возвращать одну строку для каждого case_id , где тип support , статус start , а дата означает самый первый один созданный (так что в приведенном ниже примере возвращается только случай Джона 2/2/2009, а не 3/1/2009). Поиск должен быть динамическим, чтобы можно было возвращать все похожие строки с разными case_id и т. Д. Из таблицы с тысячами строк.
После этого есть еще кое-что, но я еще не знаю всех деталей, и я думаю, что смогу разобраться, если вы, ребята (девчонки), можете помочь мне здесь. :)
ID | Case_ID | Name | Date | Status | Type
48 | 450 | John | 6/1/2009 | Fixed | Support
47 | 450 | John | 4/1/2009 | Moved | Support
46 | 451 | Sarah | 3/1/2009 | |
45 | 432 | John | 3/1/2009 | Fixed | Critical
44 | 450 | John | 3/1/2009 | Start | Support
42 | 450 | John | 2/1/2009 | Start | Support
41 | 440 | Ben | 2/1/2009 | |
40 | 432 | John | 1/1/2009 | Start | Critical
...
Спасибо большое!
Edit:
Чтобы ответить на вопросы некоторых людей, я использую SQL Server 2005. И дата - это просто обычная дата, а не строка.
Хорошо, теперь я попал в проблему. Я закончил с решением Bliek, которое работало как шарм. Но теперь я столкнулся с проблемой, что иногда статус никогда не запускается, так как он решается немедленно. Я должен включить это также. Но только на определенный период времени.
Я предполагаю, что мне придется проверить таблицу дел, на которую ссылается FK Case_ID здесь. Поэтому мне нужен способ проверить каждый Case_ID, созданный в CaseTable за последний месяц, а затем выполнить поиск по той же таблице и таким же образом, как указано выше, возвращая только первый результат, как и раньше. Как я могу использовать другую таблицу таким образом?
Как обычно, я постараюсь найти ответ сам во время ожидания, еще раз спасибо!
Редактировать 2:
Кажется, это ответ. У меня пока нет доступа к полной БД, поэтому я не могу полностью протестировать ее, но, похоже, она работает с фиктивными таблицами, которые я создал, чтобы продолжить из предложения WHERE кода Блика:
WHERE RowNumber = 1 AND Case_ID IN (SELECT Case_ID FROM CaseTable
WHERE (Date BETWEEN '2007/11/1' AND '2007/11/30'))
Дата снова облажалась, но вы поняли, я уверен. Спасибо всем за помощь! Я вернусь, если возникнут другие проблемы, но я думаю, что с помощью этой информации я смогу импровизировать в решении большинства проблем SQL, с которыми мне приходится сталкиваться в настоящее время. :)