高分求解~~
数据表内容为:
no sub_no sign
1 1
2 1
3 1
4 1
5 1
6 1
7 1
8 1
9 1
9 2
10 1
10 2
10 3
10 4
11 1
11 2
11 3
12 1
13 1
13 2
14 1
14 2
要求: 当主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 SIGN
FROM
(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 );