高分求解~~
数据表内容为:
no sub_no sign
11
21
31
41
51
61
71
81
91
92
101
102
103
104
111
112
113
121
131
132
141
142
要求: 当主ID下只有一条记录时, sign 显示为 空
当主ID下有多条子ID时, 最小的子ID 的sign 显示为 "┓"
最大的子ID 的sign 显示为 "┛"
中间的子ID 的sign 显示为 "┃"
一句SQL。。。高分求解~
[解决办法]
select no,sub_no ,(case
when cntid = 1 then
' '
else
(case sub_no
when maxid then
'┛'
when minid then
'┓'
else
'|'
end)
end)
from (select no,
sub_no,
max(sub_no) over(partition by no) maxid,
min(sub_no) over(partition by no) minid,
count(sub_no) over(partition by no) cntid
from t)
[解决办法]
楼主是在作医嘱打印吗?
- SQL code
SELECT NO, SUB_NO, CASE WHEN NO = F AND NO = L THEN '┃' WHEN NO = F AND NO <> L THEN '┛' WHEN NO <> F AND NO = L THEN '┓' ELSE '' END SIGNFROM (SELECT NO, SUB_NO, NVL(LAG(NO,1)OVER(ORDER BY PATIENT_ID,VISIT_ID,NO,SUB_NO),0) F, NVL(LEAD(NO,1)OVER(ORDER BY PATIENT_ID,VISIT_ID,NO,SUB_NO),0) L FROM TABLE );
