Ich verwalten eine landesweite Anwendung und verwenden Tableau
, um Visualisierungen von Daten zu erstellen.SQL Server 2012 Max. Datum in Unterabfrage in einer Join-Tabelle
Ich wurde beauftragt, eine Visualisierung zu erstellen, die zeigt, wie viel Zeit zwischen den Kontakteinträgen und heute verstreicht (Case Note Dates). Ich weiß, wie das maximalen Fall Note Datum im Fall Notentabelle zu isolieren:
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)
Diese Abfrage wird mir zeigen, dass max Fall in der Tabelle von heute stellt fest. Das Problem ist, dass ich die Max-Case-Note für alle Teilnehmer anzeigen muss, nicht nur für die von heute. Die ursprüngliche Abfrage, die ich verwendet haben Fall zu betrachten, stellt fest, ist:
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]
ich biVR_Cases
auf der linken Seite zu halten, müssen alle zeigen die offenen Kunden. Dann muss ich der Fallnotiz-Tabelle beitreten und für jeden Teilnehmer möchte ich ihr Max-Case-Notierungsdatum anzeigen. Als ich das Ende der obigen Abfrage hinzuzufügen:
Where cn.[Case_Note_Date] = (
Select
MAX(cn.Case_Note_Date)
From buCase_Note)
ich die folgende Fehlermeldung erhalten, ist SSMS 2012:
Ein Aggregat nicht in der WHERE-Klausel erscheinen kann, wenn es in einer Unterabfrage ist enthalten in einer HAVING-Klausel oder einer Auswahlliste, und die aggregierte Spalte ist eine äußere Referenz.
Ich suche die bi
Tabelle auf der linken Seite, während erfolgreich im Falle Notentabelle Beitritt behalten und nur der jüngste Fall Note pro Teilnehmer zu bringen.
Hinzufügen von Details: Natürlich ist Hier ist ein Beispiel von Daten, die ich erhalten, wenn Sie die folgende Abfrage ausgeführt wird:
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 Belegung aktueller Test-Teilnehmername Casenote Datum -Test Ratgeber Teilnehmer A 29. September 2010 23. September 2010 30. August 2010 30. Juni 2010 1. Juni 2010
Die Bi-Tabelle enthält Teilnehmerinformationen wie Name, Anwendung, Fall-Master-ID, etc. Die Caseinetabelle enthält auch die Case-Master-ID und damit den Join. Es enthält auch die Daten, für die jeder Eintrag erstellt wird. Für den obigen Datensatz versuche ich, nur den letzten Fall für jeden Teilnehmer einzutragen. Ich habe nur 1 in das obige Beispiel aufgenommen, aber wir haben über 15.000. Jeder Teilnehmer wird viele Fallnotizen haben. Ich versuche, die obere Fallnotiz zu erfassen, damit ich den Datumunterschied zwischen der letzten Fallnotiz und heute für jeden Teilnehmer berechnen kann. Wenn ich hinzufüge:
Es zeigt nur die obere oder maximale casennote für Teilnehmer, die eine Kaseinnote heute erstellt hatten. Anstatt die maximale Fallzahl in der Caseinetabelle anzuzeigen, benötige ich die maximale Fallzahl pro Teilnehmer. Ich hoffe, das macht mehr Sinn.
Sie sollten einige Daten anzeigen. Ihr MAX (cn.Case_Note_Date) gibt nur eine Daten von buCase_Note zurück, nicht eine pro [_Case Master ID] – Chuck