SHOW:
|
|
- or go back to the newest paste.
1 | --first step: create columns list and save it to a variable | |
2 | --create columns list for current language. | |
3 | declare @PAT_Filter nvarchar(max) | |
4 | ||
5 | --here is a new variable with filter for patient.id. | |
6 | --Only one string starting with set @pat_filter must leave uncommented. | |
7 | ||
8 | --for list. comment one, leave uncommented another. | |
9 | set @PAT_Filter=N'AND PATIENT.PAT_ExternalId in (''04772344'',''04772344'')' | |
10 | --for like | |
11 | --set @PAT_Filter=N'AND PATIENT.PAT_ExternalId like (''%4772344'')' | |
12 | --Uncomment string below to disable filter | |
13 | --set @PAT_Filter=N'' | |
14 | ||
15 | --we declare a variable @list , initialize it with empty string. | |
16 | --N letter before means that it will be in National Char, because sp_executesql needs only N' variable. | |
17 | declare @list nvarchar(max) | |
18 | set @list=N'' | |
19 | --subquery names 'As T' select all column names, simple join. outerquery concatenate string into a var @list | |
20 | select @list=@list+N',['+rtrim(SYMITEM_ShortText)+N']' from | |
21 | --remove top10 later, it for testing | |
22 | (select distinct top 10 isnull(symitem_shorttext,'nothing') as symitem_shorttext from PARA_DESC INNER JOIN | |
23 | SYMBOLITEM ON PARA_DESC.SYM_Nr = SYMBOLITEM.SYM_Nr | |
24 | --this shorttext is a bad for column names and must be removed | |
25 | where SYMBOLITEM.LANGUAGE_Id = 1 and symitem_shorttext not in ('......','')) as t | |
26 | ||
27 | --remove last 'comma' | |
28 | set @list=substring(@list,2,len(@list)-1) | |
29 | --print for debug | |
30 | print @list | |
31 | print @pat_filter | |
32 | ||
33 | declare @q nvarchar(max) | |
34 | set @q=N'select * from | |
35 | (SELECT | |
36 | ||
37 | PATIENT.PAT_ExternalId, PATIENT.PAT_Birthdate, PATIENT.PAT_FirstName, | |
38 | PATIENT.PAT_Lastname, TEST.TEST_Weight, TEST.TEST_Height, | |
39 | MEASPARAMETER.PARA_Value, MEASPARAMETER.PARA_PredValue, | |
40 | SUBMEASURE.SUBMEAS_BestMarker, | |
41 | PARA_DESC.PARADES_Type, | |
42 | TEST.TEST_GenDate, | |
43 | ||
44 | (select PROP_ValueN from PATIENT_ACTSETTING where COLPROP_No=1 and PATIENT.PAT_Id = PATIENT_ACTSETTING.PAT_Id) as weightp, | |
45 | (select PROP_ValueN from PATIENT_ACTSETTING where COLPROP_No=2 and PATIENT.PAT_Id = PATIENT_ACTSETTING.PAT_Id) as heightp, | |
46 | (select PROP_ValueS from PATIENT_ACTSETTING where COLPROP_No=9 and PATIENT.PAT_Id = PATIENT_ACTSETTING.PAT_Id) as diagnosis, | |
47 | (select PROP_ValueS from PATIENT_ACTSETTING where COLPROP_No=10 and PATIENT.PAT_Id = PATIENT_ACTSETTING.PAT_Id) as location, | |
48 | (select PROP_ValueS from PATIENT_ACTSETTING where COLPROP_No=11 and PATIENT.PAT_Id = PATIENT_ACTSETTING.PAT_Id) as doctor, | |
49 | (select PROP_ValueS from PATIENT_ACTSETTING where COLPROP_No=12 and PATIENT.PAT_Id = PATIENT_ACTSETTING.PAT_Id) as location12, | |
50 | ||
51 | (select cast(PARAGRAPH.DOCP_Text as varchar(max)) from PARAGRAPH where [DOCUMENT].DOC_Id = PARAGRAPH.DOC_Id and DOCP_Type=0 ) as Interpretation, | |
52 | (select cast(PARAGRAPH.DOCP_Text as varchar(max)) from PARAGRAPH where [DOCUMENT].DOC_Id = PARAGRAPH.DOC_Id and DOCP_Type=24 ) as [Test quality], | |
53 | PATIENT.PAT_ExternalId AS Expr2, | |
54 | RTRIM(SYMBOLITEM.SYMITEM_ShortText) as ColumnName | |
55 | FROM PATIENT INNER JOIN | |
56 | TEST ON PATIENT.PAT_DemId = TEST.PAT_DemId INNER JOIN | |
57 | MEASUREMENT ON TEST.TEST_Id = MEASUREMENT.TEST_Id INNER JOIN | |
58 | SUBMEASURE ON MEASUREMENT.MEAS_Id = SUBMEASURE.MEAS_Id INNER JOIN | |
59 | MEASPARAMETER ON SUBMEASURE.SUBMEAS_Id = MEASPARAMETER.SUBMEAS_Id INNER JOIN | |
60 | PARA_DESC ON MEASPARAMETER.PARADES_Id = PARA_DESC.PARADES_Id INNER JOIN | |
61 | SYMBOLITEM ON PARA_DESC.SYM_Nr = SYMBOLITEM.SYM_Nr | |
62 | INNER JOIN PATIENT_ACTSETTING ON PATIENT.PAT_Id = PATIENT_ACTSETTING.PAT_Id INNER JOIN | |
63 | [DOCUMENT] ON PATIENT.PAT_DemId = [DOCUMENT].PAT_DemId INNER JOIN | |
64 | PARAGRAPH ON [DOCUMENT].DOC_Id = PARAGRAPH.DOC_Id | |
65 | WHERE (SYMBOLITEM.LANGUAGE_Id = 1) AND (SUBMEASURE.SUBMEAS_BestMarker = 1) | |
66 | ||
67 | '+@PAT_Filter+' | |
68 | - | --DATE FILTER will be here |
68 | + | AND TEST_GenDate between ''20080101'' and ''20090101'' |
69 | ) as sourcetable | |
70 | pivot | |
71 | ( | |
72 | max(para_value) for columnname in | |
73 | ('+@list+N')) as ptable | |
74 | ORDER BY PAT_ExternalId' | |
75 | ||
76 | print @q | |
77 | exec sp_executesql @q |