Časť môjho dotazu vyzerá takto,
LEFT JOIN (
SELECT
*
FROM
(select L.LOG_ID
,L.PAT_ID
,t.PANEL_START_TIME
,"Row" = ROW_NUMBER() over (partition by l.pat_id order by panel_start_time)
from or_log l
inner join PATIENT p ON p.PAT_ID = l.PAT_ID
left join OR_LOG_PANEL_TIME1 t on t.LOG_ID = l.LOG_ID and t.PANEL_TIME_EVENT_C = x
where p.PAT_MRN_ID = @PatMRN AND l.surgery_date = @SurgDate
AND l.CASE_CLASS_C IN ("xx", "xx")
)a
Ak mám dva parametre a každý z nich má viac hodnôt,
@MRN = 1, 2, 3
@SurgDate = 2012, 2013, 2014
Existuje nejaký spôsob, ako môžem zadať parametre do dotazu v uvedenom poradí?
1 2012 first parameter
2 2013 2nd
3 2014 3rd
potom vygenerujte nasledujúci výstup
PatMRN SurgDate ORD_NUM_VALUE
1 2012 3
2 2013 3
3 2014 3
odpovede:
1 pre odpoveď č. 1Predpokladajme, že máte tabuľkovú premennú:
declare @t table(mrn int, surg int)
insert into @t values
(1,2012),
(2,2012),
(3,2014)
Teraz môžete prepísať svoje vyhlásenie:
LEFT JOIN (
SELECT
*
FROM
(select L.LOG_ID
,L.PAT_ID
,t.PANEL_START_TIME
,"Row" = ROW_NUMBER() over (partition by l.pat_id order by panel_start_time)
from or_log l
inner join PATIENT p ON p.PAT_ID = l.PAT_ID
left join OR_LOG_PANEL_TIME1 t on t.LOG_ID = l.LOG_ID and t.PANEL_TIME_EVENT_C = x
join @t t on t.mrn = p.PAT_MRN_ID AND t.surg = l.surgery_date
Where l.CASE_CLASS_C IN ("xx", "xx")
)a
Teraz chcete vedieť, že môžete vytvoriť vlastný typ s hodnotou tabuľky:
CREATE TYPE MRNType AS TABLE
( mrn int,
surg int);
GO
A použite to napríklad v proc:
Create someProc
@t MTNType
AS
....
your statement
....
A použite tento proc ako:
declare @t MRNType
insert into @t values
(1,2012),
(2,2012),
(3,2014)
Exec someProc @t = @t