/ / vykonajte dva parametre v poradí - sql-server, sql-server-2012

vykonajte dva parametre v poradí - sql-server, sql-server-2012

Č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ď č. 1

Predpokladajme, ž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