Я управляю государственным приложением и использую Tableau
для создания визуализации данных.SQL Server 2012 Макс. Дата в подзапросе в объединенной таблице
Мне было поручено создать визуализацию, показывающую, сколько времени проходит между контактами и сегодня (Case Note Dates). Я знаю, как изолировать максимальную дату случае примечание в таблице случае примечание:
Select
[Case_Master_ID],
[Case_Note_Date],
[Case_Note_Category_Desc],
[Case_Note_Summary_Narr]
From
buCase_Note
Where
Case_Note_Date = (Select MAX(Case_Note_Date)
From buCase_Note)
Этот запрос покажет мне, что максимальный случай отмечает в таблице с сегодняшнего дня. Проблема в том, что мне нужно показать максимальную заметку для всех участников, а не только сегодняшних. Исходный запрос я использую для просмотра дела Замечаний:
Select
vc.[_Case Master ID],
vc.[_Caseload Assignment Current],
vc.[_Participant Name],
vc.[Case Status],
vc.[Reporting Structure Level 4],
vc.[Reporting Structure Level 5],
vc.[Application Date],
vc.[Eligibility Date],
vc.[Eligibility Determination Extension Date],
vc.[Eligibility Extended To Date],
vc.[Days in Application],
cn.[Case_Note_Date],
cn.[Case_Note_Category_Desc],
cn.[Case_Note_Summary_Narr]
From
biVR_Cases vc
Left outer Join
buCase_Note cn ON cn.Case_Master_ID = vc.[_Case Master ID]
мне нужно держать biVR_Cases
налево, чтобы показать все открытые клиентов. Затем мне нужно присоединиться к таблице заметок и для каждого участника, я хочу показать их максимальную дату заметки. Когда я добавляю это к концу указанного выше запроса:
Where cn.[Case_Note_Date] = (
Select
MAX(cn.Case_Note_Date)
From buCase_Note)
Я получаю следующее сообщение об ошибке SSMS 2012:
Агрегат не может появиться в ИНЕКЕ, если оно не находится в подчиненном запросе, содержащейся в предложении HAVING или списке выбора, а агрегированный столбец является внешней ссылкой.
Я ищу, чтобы сохранить bi
таблицы слева при успешном присоединении в таблице историй болезни и приносить только в последнем случае примечания на каждом участник.
Добавление деталей: Конечно, Вот пример данных, я получаю при выполнении следующего запроса:
Select
vc.[_Case Master ID],
vc.[_Caseload Assignment Current],
vc.[_Participant Name],
cn.[Case_Note_Date],
From biVR_Cases vc
LEFT outer JOIN buCase_Note cn ON vc.[_Case Master ID] = cn.Case_Master_ID
_Caseload назначения текущего испытания Участник Имя Casenote Дата Тест Утешитель Участнику 29 сентября, 2010 23 сентября 2010 года 30 августа 2010 года 30 июня 2010 года 1 июня 2010 года
Таблица битов содержит информацию о пользователе, такую как имя, приложение, идентификатор ведущего устройства и т. Д. Таблица casenote содержит идентификатор ведущего устройства, а также соединение. Он также содержит даты, когда каждая запись создается. Поэтому для набора данных выше, я пытаюсь привести только последний случай для каждого участника. Я включил только 1 в образец выше, но у нас более 15 000. У каждого участника будет много заметок. Я пытаюсь захватить верхний casenote, поэтому я могу рассчитать разницу дат между последней записью к делу и сегодня для каждого участника. Когда я добавляю:
Where cn.[Case_Note_Date] = (Select
top 1 [Case_Note_Date]
From buCase_Note
Order by 1 DESC))
OR
Where Case_Note_Date=(
Select
MAX(Case_Note_Date)
From buCase_Note)
Это только показывает верхний или максимальный casenote для участников, которые имели casenote созданный сегодня. Вместо того, чтобы показывать max casenote в таблице casenote, мне нужен максимальный шанс для каждого участника. Надеюсь, это имеет смысл.
Вы должны показать некоторые данные. Ваш MAX (cn.Case_Note_Date) вернет только один данные из buCase_Note, не один за [_Case Master ID] – Chuck