Ho una tabella patient_visit_codes
con i campi: pat_id, visit_id, visit_date, visit_code, create_timestamp
. Ogni paziente può avere un numero infinito di codici visita per ciascuna data di visita. Ogni visit_code
è elencato in una riga separata. Voglio ottenere solo i primi 4 visit_code
creati in una riga in colonne separate.Come posso ottenere i primi 4 valori di riga in una riga in colonne separate per ogni record visit_id?
Quindi, se la mia tabella ha i dati di seguito:
;WITH patient_visit_codes AS (
SELECT * FROM (VALUES
(1, 'B58B3850-43BB-434D-B1EA-B968A01332EA', '2015-12-22', '3018F', '2015-12-22 07:24:07.403'),
(1, 'B58B3850-43BB-434D-B1EA-B968A01332EA', '2015-12-22', '1101F', '2015-12-22 07:28:09.440'),
(56, '482A73F8-EA3F-4CD6-B1AD-BD2388EC5912', '2016-01-05', 'I50', '2016-01-05 11:05:34.830'),
(56, '482A73F8-EA3F-4CD6-B1AD-BD2388EC5912', '2016-01-05', 'R50.90', '2016-01-05 11:35:14.560'),
(56, '482A73F8-EA3F-4CD6-B1AD-BD2388EC5912', '2016-01-05', 'Z02.89', '2016-01-05 11:40:24.740')
) as t (pat_id, visit_id, visit_date, visit_code, create_timestamp))
che sto cercando di ottenere risultati come di seguito:
pat_id | visit_id | visit_code1 | visit_code2 | visit_code3 | visit_code4
1 | B58B3850-43BB-434D-B1EA-B968A01332EA | 3018F | 1101F | Null | Null
56 | 482A73F8-EA3F-4CD6-B1AD-BD2388EC5912 | I50 | R50.90 | Z02.89 | Null
Quali MSSQL o MySQL –
Si prega di specificare che SQL si sta chiedendo, la risposta può comportare l'uso della funzione di rotazione in cui la sintassi potrebbe essere diverso. –
Le mie scuse, sto usando SQL Server 2012 – Chrissy