22,207
社区成员
发帖
与我相关
我的任务
分享
--先加索引
CREATE INDEX ix_ED_BXDATA_bxdate ON ED_BXDATA(bxdate)
CREATE INDEX ix_ed_social_cjdate ON ed_social(cjdate)
--语句改一下,主要是日期不要用函数包装!
SELECT a.bx_eid,
MAX(b.mastname) AS 单位名称,
MAX(b.deptname) AS 部门名称,
SUM(a.个人合计),
MAX(b.shortcode) AS shortcode,
MAX(b.mastid) AS mastid,
SUM(b.oldbxjs) AS 养老险基数,
SUM(a.个人养老险)
FROM (
SELECT bx_eid,
MAX(bxdate) AS bxdate,
SUM(a.bxmoney) AS 个人合计,
SUM(
CASE
WHEN a.sb_itemname LIKE '%养老保险%' THEN a.bxmoney
ELSE 0
END
) AS 个人养老险
FROM ED_BXDATA a
WHERE bxdate>='2017-9-1'
AND bxdate<='2017-10-2'
GROUP BY
bx_eid
) AS a
LEFT JOIN (
SELECT *
FROM ed_social
WHERE cjdate>='2017-9-1'
AND cjdate<='2017-10-2'
) b
ON a.bx_eid = b.si_eid
WHERE 1 = 1
AND b.mastid IN (10077)
GROUP BY
a.bx_eid