Considerando il follwing:SQL: modo migliore per costruire una linea temporale da due tabelle di cronologia
CREATE TABLE Members (MemberID INT)
INSERT Members VALUES (1001)
CREATE TABLE PCPs (PCPID INT)
INSERT PCPs VALUES (231)
INSERT PCPs VALUES (327)
INSERT PCPs VALUES (390)
CREATE TABLE Plans (PlanID INT)
INSERT Plans VALUES (555)
INSERT Plans VALUES (762)
CREATE TABLE MemberPCP (
MemberID INT
, PCP INT
, StartDate DATETIME
, EndDate DATETIME)
INSERT MemberPCP VALUES (1001, 231, '2002-01-01', '2002-06-30')
INSERT MemberPCP VALUES (1001, 327, '2002-07-01', '2003-05-31')
INSERT MemberPCP VALUES (1001, 390, '2003-06-01', '2003-12-31')
CREATE TABLE MemberPlans (
MemberID INT
, PlanID INT
, StartDate DATETIME
, EndDate DATETIME)
INSERT MemberPlans VALUES (1001, 555, '2002-01-01', '2003-03-31')
INSERT MemberPlans VALUES (1001, 762, '2003-04-01', '2003-12-31')
Sto cercando un modo pulito per costruire un calendario per le relazioni/PCP/Plan membri, in caso di variazione il PCP o il piano per un membro risulterebbe in una riga di inizio/fine separata nel risultato. Ad esempio, se nel corso di pochi anni, un membro cambiato il loro PCP due volte e il loro piano di una volta, ma ogni in date diverse, vorrei vedere qualcosa di simile al seguente:
MemberID PCP PlanID StartDate EndDate
1001 231 555 2002-01-01 2002-06-30
1001 327 555 2002-07-01 2003-03-31
1001 327 762 2003-04-01 2003-05-31
1001 390 762 2003-06-01 2003-12-31
Come potete vedere, ho bisogno di un separato riga di risultato per ogni periodo di date che comporta una differenza nell'associazione Membro/PCP/Piano. Ho una soluzione in atto, ma è molto contorta con molte dichiarazioni CASE e la logica condizionale nella clausola WHERE. Sto solo pensando che c'è un modo molto più semplice per farlo.
Grazie.
Possiamo vedere il tuo lavoro? –
Puoi postare questa complicata istruzione CASE su [SQLFiddle] (http://sqlfiddle.com/) in modo che possiamo vedere cosa hai fatto? –
Questa è una cosa davvero complicata da fare. Non so se c'è un * modo molto più semplice * per farlo. Quindi probabilmente dovresti pubblicare la tua soluzione e possiamo aiutarti a iniziare da lì – Lamak