Wij zijn op zoek naar een dynamishe manier de Source tabel om te zetten naar de Destination tabel. Het doet eigenlijk niet meer dan het aantal Subjects met Status * optellen voor elke Visit en dit in een kolom plaatsen met de naam 'Count_(Visit)'
Situatie:
======
Source table:
-------------------
SiteID SubjID Visit Status
1 1 W1 A
1 1 W2 B
1 1 W2 C
1 2 W1 C
1 2 W2 A
1 2 W3 A
1 3 W1 A
1 3 W2 C
...
2
Destination table:
------------------
SiteID Status Count_W1 Count_W2 Count_W3
1 A 2 1 1
1 B 0 1 0
1 C 1 1 1
...
Onze oplossing (Niet erg dynamisch en vooral heel lang)
===========
--> Eerst maken we een tijdelijke tabel waar we de enkel de eerste Visit selecteren.
CREATE TABLE Temp_W1
AS
SELECT SiteID, SubjID, Visit, Status Status_W1
FROM Source
WHERE Visit = 'W1';
--> Dan tellen we alles op van die Visit.
CREATE TABLE Temp_W1_Count
AS
SELECT SiteID,
'A' Status
Count(Status_W1) Count_W1
FROM Temp_W1
WHERE Status_W1 = 'A'
GROUP BY SiteID
UNION
SELECT SiteID,
'B' Status
Count(Status_W1) Count_W1
FROM Temp_W1
WHERE Status_W1 = 'B'
GROUP BY SiteID
UNION
SELECT SiteID,
'C' Status
Count(Status_W1) Count_W1
FROM Temp_W1
WHERE Status_W1 = 'C'
GROUP BY SiteID
--> Deze 2 stappen doen we voor elke Visit
--> (Met gevolg dat als er een Visit bijkomt we het script weer moeten aanpassen)
--> Als laatse stap Joinen we elke Temp_**_Count tabel
CREATE TABLE Destination
AS
SELECT SiteID, Status, Count_W1, Count_W2, Count_W3 ...
Vraag
========
Is er een manier om dit te bekomen op een kortere en dynamische manier?
Situatie:
======
Source table:
-------------------
SiteID SubjID Visit Status
1 1 W1 A
1 1 W2 B
1 1 W2 C
1 2 W1 C
1 2 W2 A
1 2 W3 A
1 3 W1 A
1 3 W2 C
...
2
Destination table:
------------------
SiteID Status Count_W1 Count_W2 Count_W3
1 A 2 1 1
1 B 0 1 0
1 C 1 1 1
...
Onze oplossing (Niet erg dynamisch en vooral heel lang)
===========
--> Eerst maken we een tijdelijke tabel waar we de enkel de eerste Visit selecteren.
CREATE TABLE Temp_W1
AS
SELECT SiteID, SubjID, Visit, Status Status_W1
FROM Source
WHERE Visit = 'W1';
--> Dan tellen we alles op van die Visit.
CREATE TABLE Temp_W1_Count
AS
SELECT SiteID,
'A' Status
Count(Status_W1) Count_W1
FROM Temp_W1
WHERE Status_W1 = 'A'
GROUP BY SiteID
UNION
SELECT SiteID,
'B' Status
Count(Status_W1) Count_W1
FROM Temp_W1
WHERE Status_W1 = 'B'
GROUP BY SiteID
UNION
SELECT SiteID,
'C' Status
Count(Status_W1) Count_W1
FROM Temp_W1
WHERE Status_W1 = 'C'
GROUP BY SiteID
--> Deze 2 stappen doen we voor elke Visit
--> (Met gevolg dat als er een Visit bijkomt we het script weer moeten aanpassen)
--> Als laatse stap Joinen we elke Temp_**_Count tabel
CREATE TABLE Destination
AS
SELECT SiteID, Status, Count_W1, Count_W2, Count_W3 ...
Vraag
========
Is er een manier om dit te bekomen op een kortere en dynamische manier?