Ich arbeite mit zwei Tabellen in dieser Abfrage Table 1: admit
, Table 2: Billing.
Was ich tun möchte, ist, zeigen Menschen, die zu unseren Krisenleistungen (program codes '44282' and '44283')
zugelassen sind. Für diese Leute möchte ich ihre Versicherung zeigen, die unter dem Feld guarantor_id
in der Abrechnungstabelle steht. Um dies zu tun, muss ich ALLE effektiven Daten der maximalen Abdeckung zeigen cov_effective_date
, wo das effektive Datum der Abdeckung weniger als das Aufnahmedatum preadmit_admission_date
ist und das Verfallsdatum der Abdeckung cov_expiration_date
ist größer als das Aufnahmedatum (oder Is Null). Der Code, den ich gerade habe, tut alles, was ich will, aber nicht alle effektiven Daten der maximalen Abdeckung. Wenn also jemand zwei verschiedene Versicherungen hatte, die am selben Tag begannen, wird nur einer angezeigt, und ich möchte, dass beide angezeigt werden.Auswahl aller Maximalwerte SQL-Abfrage
Select
A.patid
,A.episode_number
,A.preadmit_admission_date
,A.program_code
,A.program_value
,A.c_date_of_birth
,A.guarantor_id
,max(A.cov_effective_date) as "MaxDate"
from(
Select
SA.patid
,SA.episode_number
,SA.preadmit_admission_date
,SA.program_code
,SA.program_value
,SA.c_date_of_birth
,BGE.guarantor_id
,BGE.cov_effective_date
From System.view_episode_summary_admit as "SA"
Left Outer Join
(Select
BG.patid
,BG.episode_number
,BG.guarantor_id
,BG.cov_effective_date
,BG.cov_expiration_date
from System.billing_guar_emp_data as "BG"
Inner Join
(Select patid, episode_number, preadmit_admission_date
from System.view_episode_summary_admit) as "A"
On
(A.patid = BG.patid) and (A.episode_number = BG.episode_number)
Where
BG.cov_effective_date <= preadmit_admission_date and
(BG.cov_expiration_date >= preadmit_admission_date or
BG.cov_expiration_date Is Null)
) as "BGE"
on
(BGE.patid = SA.patid) and (BGE.episode_number = SA.episode_number)
Where
(program_code = '44282' or program_code = '44283')
and preadmit_admission_date >= {?Start Date}
and preadmit_admission_date <= {?End Date}
) A
Group By Patid, Episode_number
Es tut uns leid, es ist pünktlich oder das wäre eine vollständige Antwort. Diese Abfrage wird in den meisten SQL-Sprachen nicht ausgeführt und verursacht einen Fehler. Wenn Sie aggregates verwenden, müssen Sie alle nicht aggregierten Spalten in der Gruppe verwenden. MySQL mag es, den Fehler zu überspringen und willkürlich Werte für Spalten zu sammeln, die nicht in der Gruppe enthalten sind. Lasst uns also dieses Aggregat loswerden. Sie haben eine Unterabfrage ... schreiben Sie eine Unterabfrage, die das Höchstdatum mit Ihrem Schlüssel abruft, verbinden Sie sie mit dem Rest Ihrer Aussage und verweisen Sie von dort auf sie. Wenn du weitere Hilfe brauchst, werde ich in ein paar Stunden etwas für dich haben. – Twelfth
@Twelfth Ok, danke! Ich werde daran arbeiten. – Hound
@Twelfth Ich habe versucht, Ihre Anweisungen zu befolgen, aber ich habe immer noch Probleme, meine Abfrage zu arbeiten. Wenn du noch Zeit hast, würde ich gerne sehen, was dir einfällt! – Hound