SET @beginDate='2019-01-01';
-- 时间段 开始时间
SET @MAXDATE = '2019-12-31';
-- 时间段 结束时间
SET @rownum = 0;
SELECT
@rownum :=@rownum + 1 AS "排名序号",
l.medical_org_name as "医疗机构名称",
l.result_date as "日期",
l.pc as "当日在院人数"
FROM
(
SELECT
r.medical_org_name,
t.result_date,
count(r.pc_no) pc
FROM
(
SELECT
result_date
FROM
(
SELECT
DATE(@tempDay) result_date ,
@tempDay := DATE_ADD(@tempDay, INTERVAL 1 DAY)
FROM
fc_bill_info_detail f -- 该表是系统上已存在的一个有比较多数据的表
LEFT JOIN (SELECT @tempDay :=@beginDate) b ON 1 = 1
WHERE
@tempDay <=@maxDate
) a
) t,
(
SELECT
a.pc_no,
date_format(a.in_hosp_date, '%Y-%m-%d') indat,
date_format(a.out_hosp_date, '%Y-%m-%d') outdat,
a.medical_org_code,
a.medical_org_name
FROM
fc_bill_info a
GROUP BY
a.pc_no,
a.in_hosp_date,
a.out_hosp_date,
a.medical_org_code,
a.medical_org_name
) r
WHERE
r.indat < t.result_date
AND r.outdat > t.result_date
GROUP BY
r.medical_org_code,
r.medical_org_name,
t.result_date
ORDER BY
count(r.pc_no) DESC
) l
-- 时间段 开始时间
SET @MAXDATE = '2019-12-31';
-- 时间段 结束时间
SET @rownum = 0;
SELECT
@rownum :=@rownum + 1 AS "排名序号",
l.medical_org_name as "医疗机构名称",
l.result_date as "日期",
l.pc as "当日在院人数"
FROM
(
SELECT
r.medical_org_name,
t.result_date,
count(r.pc_no) pc
FROM
(
SELECT
result_date
FROM
(
SELECT
DATE(@tempDay) result_date ,
@tempDay := DATE_ADD(@tempDay, INTERVAL 1 DAY)
FROM
fc_bill_info_detail f -- 该表是系统上已存在的一个有比较多数据的表
LEFT JOIN (SELECT @tempDay :=@beginDate) b ON 1 = 1
WHERE
@tempDay <=@maxDate
) a
) t,
(
SELECT
a.pc_no,
date_format(a.in_hosp_date, '%Y-%m-%d') indat,
date_format(a.out_hosp_date, '%Y-%m-%d') outdat,
a.medical_org_code,
a.medical_org_name
FROM
fc_bill_info a
GROUP BY
a.pc_no,
a.in_hosp_date,
a.out_hosp_date,
a.medical_org_code,
a.medical_org_name
) r
WHERE
r.indat < t.result_date
AND r.outdat > t.result_date
GROUP BY
r.medical_org_code,
r.medical_org_name,
t.result_date
ORDER BY
count(r.pc_no) DESC
) l