27,579
社区成员
发帖
与我相关
我的任务
分享
CREATE TABLE #T1(XM VARCHAR(20),ZB VARCHAR(200),BH VARCHAR(200),JE INT,ZT VARCHAR(200),RQ DATE)
INSERT INTO #T1 VALUES
('张三','1组','99999',100,'通过','2016/10/20'),
('罗六','4组','10000',50,'通过','2016/10/25'),
('田七','4组','88888',100,'通过','2016/11/02'),
('张三','1组','10001',100,'通过','2016/11/01'),
('张三','1组','10002',100,'拒绝',' 2016/11/07'),
('张三','1组','10003',200,'通过','2016/11/26'),
('李四','2组','10004',300,'通过','2016/11/03'),
('李四','2组','10005',100,'通过','2016/11/03'),
('李四','2组','10006',300,'放弃','2016/11/15'),
('李四','2组','10007',200,'拒绝','2016/11/25'),
('王五','3组','10008',300,'通过','2016/11/15'),
('王五','3组','10009',200,'通过','2016/11/25'),
('王五','3组','10010',100,'通过','2016/12/15')
CREATE TABLE #T2(XM VARCHAR(20),ZB VARCHAR(200),BH VARCHAR(200),RQ DATE,JE INT)
INSERT INTO #T2 VALUES
('罗六','4组','10000','2016/10/27',10),
('罗六','4组','10000','2016/11/01',20),
('张三','1组','10001','2016/11/03',100),
('张三','1组','10003','2016/11/26',100),
('李四','2组','10004','2016/11/24',100),
('李四','2组','10005','2016/11/24',100),
('李四','2组','10004','2016/11/26',100),
('王五','3组','10008','2016/11/15',150),
('王五','3组','10008','2016/11/19',150),
('王五','3组','10009','2016/12/03',50),
('王五','3组','10009','2016/12/07',50)
;WITH tempa AS (
SELECT xm,zt,COUNT(DISTINCT BH) AS 笔数,SUM(JE) AS 金额 FROM #T1 WHERE rq BETWEEN '2016-11-01' AND '2016-11-30' GROUP BY xm,ZT
),tempb AS (
SELECT xm,COUNT(DISTINCT BH) AS 笔数,SUM(JE) AS 金额 FROM #T2 WHERE rq BETWEEN '2016-11-01' AND '2016-11-30' GROUP BY XM
),result AS (
SELECT COALESCE(tempb.XM ,tempa.XM ) AS XM,
SUM(CASE WHEN tempa.ZT = '通过' THEN tempa.笔数
ELSE 0
END) AS 通过笔数 ,
SUM(CASE WHEN tempa.ZT = '通过' THEN tempa.金额
ELSE 0
END) AS 通过金额 ,
SUM(CASE WHEN tempa.ZT = '拒绝'
OR tempa.ZT = '放弃' THEN tempa.笔数
ELSE 0
END) AS [拒绝/放弃笔数] ,
SUM(CASE WHEN tempa.ZT = '拒绝'
OR tempa.ZT = '放弃' THEN tempa.金额
ELSE 0
END) AS [拒绝/放弃金额] ,
MAX(tempb.笔数) AS 放款笔数 ,
MAX(tempb.金额) AS 放款金额 ,
( ( SELECT SUM(JE)
FROM #T1
WHERE ZT = '通过'
AND XM = tempb.XM
GROUP BY XM
) - ( SELECT SUM(JE)
FROM #T2
WHERE XM = tempb.XM
GROUP BY XM
) ) AS 待放款金额 ,
DENSE_RANK() OVER ( ORDER BY MAX(tempb.金额) DESC ) AS 放款排名
FROM tempb
FUll JOIN tempa ON tempa.XM = tempb.XM
GROUP BY tempb.XM,tempa.XM
)
SELECT * FROM (
SELECT * FROM result
UNION
SELECT '合计' AS xm ,
SUM(通过笔数) AS 通过笔数 ,
SUM(通过金额) AS 通过金额 ,
SUM([拒绝/放弃笔数]) AS [拒绝/放弃笔数] ,
SUM([拒绝/放弃金额]) AS [拒绝/放弃金额] ,
SUM([放款笔数]) AS [放款笔数] ,
SUM(放款金额) AS 放款金额 ,
SUM(待放款金额) AS 待放款金额 ,
9999
FROM result
)t
ORDER BY t.放款排名
DROP TABLE #T1,#T2
;WITH tempa AS (
SELECT xm,zt,COUNT(DISTINCT BH) AS 笔数,SUM(JE) AS 金额 FROM #T1 WHERE rq BETWEEN '2016-11-01' AND '2016-11-30' GROUP BY xm,ZT
),tempb AS (
SELECT xm,COUNT(DISTINCT BH) AS 笔数,SUM(JE) AS 金额 FROM #T2 WHERE rq BETWEEN '2016-11-01' AND '2016-11-30' GROUP BY XM
),result AS (
SELECT tempa.XM ,
SUM(CASE WHEN tempa.ZT = '通过' THEN tempa.笔数
ELSE 0
END) AS 通过笔数 ,
SUM(CASE WHEN tempa.ZT = '通过' THEN tempa.金额
ELSE 0
END) AS 通过金额 ,
SUM(CASE WHEN tempa.ZT = '拒绝'
OR tempa.ZT = '放弃' THEN tempa.笔数
ELSE 0
END) AS [拒绝/放弃笔数] ,
SUM(CASE WHEN tempa.ZT = '拒绝'
OR tempa.ZT = '放弃' THEN tempa.金额
ELSE 0
END) AS [拒绝/放弃金额] ,
ISNULL(MAX(tempb.笔数),0) AS 放款笔数 ,
ISNULL(MAX(tempb.金额),0) AS 放款金额 ,
ISNULL(( ( SELECT SUM(JE)
FROM #T1
WHERE ZT = '通过'
AND XM = tempa.XM
GROUP BY XM
) - ( SELECT SUM(JE)
FROM #T2
WHERE XM = tempa.XM
GROUP BY XM
) ),0) AS 待放款金额 ,
DENSE_RANK() OVER ( ORDER BY MAX(tempb.金额) DESC ) AS 放款排名
FROM tempa
LEFT JOIN tempb ON tempa.XM = tempb.XM
GROUP BY tempa.XM
)
SELECT * FROM (
SELECT * FROM result
UNION
SELECT '合计' AS xm ,
SUM(通过笔数) AS 通过笔数 ,
SUM(通过金额) AS 通过金额 ,
SUM([拒绝/放弃笔数]) AS [拒绝/放弃笔数] ,
SUM([拒绝/放弃金额]) AS [拒绝/放弃金额] ,
SUM([放款笔数]) AS [放款笔数] ,
SUM(放款金额) AS 放款金额 ,
SUM(待放款金额) AS 待放款金额 ,
9999
FROM result
)t
ORDER BY t.放款排名
CREATE TABLE #T1(XM VARCHAR(20),BH VARCHAR(200),JE INT,ZT VARCHAR(200),RQ DATE)
INSERT INTO #T1 VALUES
('张三','99999',100,'通过','2016/10/20'),
('罗六','10000',50,'通过','2016/10/25'),
('张三','10001',100,'通过','2016/11/01'),
('张三','10002',100,'拒绝',' 2016/11/07'),
('张三','10003',200,'通过','2016/11/26'),
('李四','10004',300,'通过','2016/11/03'),
('李四','10005',100,'通过','2016/11/03'),
('李四','10006',300,'放弃','2016/11/15'),
('李四','10007',200,'拒绝','2016/11/25'),
('王五','10008',300,'通过','2016/11/15'),
('王五','10009',200,'通过','2016/11/25'),
('王五','10010',100,'通过','2016/12/15')
CREATE TABLE #T2(XM VARCHAR(20),BH VARCHAR(200),RQ DATE,JE INT)
INSERT INTO #T2 VALUES
('罗六','10000','2016/10/27',10),
('罗六','10000','2016/11/01',20),
('张三','10001','2016/11/03',100),
('张三','10003','2016/11/26',100),
('李四','10004','2016/11/24',100),
('李四','10005','2016/11/24',100),
('李四','10004','2016/11/26',100),
('王五','10008','2016/11/15',150),
('王五','10008','2016/11/19',150),
('王五','10009','2016/12/03',50),
('王五','10009','2016/12/07',50)
;WITH tempa AS (
SELECT xm,zt,COUNT(1) AS 笔数,SUM(JE) AS 金额 FROM #T1 WHERE rq BETWEEN '2016-11-01' AND '2016-11-30' GROUP BY xm,ZT
),tempb AS (
SELECT xm,COUNT(1) AS 笔数,SUM(JE) AS 金额 FROM #T2 WHERE rq BETWEEN '2016-11-01' AND '2016-11-30' GROUP BY XM
),result AS (
SELECT tempb.XM ,
SUM(CASE WHEN tempa.ZT = '通过' THEN tempa.笔数
ELSE 0
END) AS 通过笔数 ,
SUM(CASE WHEN tempa.ZT = '通过' THEN tempa.金额
ELSE 0
END) AS 通过金额 ,
SUM(CASE WHEN tempa.ZT = '拒绝'
OR tempa.ZT = '放弃' THEN tempa.笔数
ELSE 0
END) AS [拒绝/放弃笔数] ,
SUM(CASE WHEN tempa.ZT = '拒绝'
OR tempa.ZT = '放弃' THEN tempa.金额
ELSE 0
END) AS [拒绝/放弃金额] ,
MAX(tempb.笔数) AS 放款笔数 ,
MAX(tempb.金额) AS 放款金额 ,
( ( SELECT SUM(JE)
FROM #T1
WHERE ZT = '通过'
AND XM = tempb.XM
GROUP BY XM
) - ( SELECT SUM(JE)
FROM #T2
WHERE XM = tempb.XM
GROUP BY XM
) ) AS 待放款金额 ,
DENSE_RANK() OVER ( ORDER BY MAX(tempb.金额) DESC ) AS 放款排名
FROM tempb
LEFT JOIN tempa ON tempa.XM = tempb.XM
GROUP BY tempb.XM
)
SELECT * FROM (
SELECT * FROM result
UNION
SELECT '合计' AS xm ,
SUM(通过笔数) AS 通过笔数 ,
SUM(通过金额) AS 通过金额 ,
SUM([拒绝/放弃笔数]) AS [拒绝/放弃笔数] ,
SUM([拒绝/放弃金额]) AS [拒绝/放弃金额] ,
SUM([放款笔数]) AS [放款笔数] ,
SUM(放款金额) AS 放款金额 ,
SUM(待放款金额) AS 待放款金额 ,
9999
FROM result
)t
ORDER BY t.放款排名
DROP TABLE #T1,#T2
CREATE TABLE #T1(XM VARCHAR(20),BH VARCHAR(200),JE INT,ZT VARCHAR(200),RQ DATE)
INSERT INTO #T1 VALUES
('张三','99999',100,'通过','2016/10/20'),
('罗六','10000',50,'通过','2016/10/25'),
('张三','10001',100,'通过','2016/11/01'),
('张三','10002',100,'拒绝',' 2016/11/07'),
('张三','10003',200,'通过','2016/11/26'),
('李四','10004',300,'通过','2016/11/03'),
('李四','10005',100,'通过','2016/11/03'),
('李四','10006',300,'放弃','2016/11/15'),
('李四','10007',200,'拒绝','2016/11/25'),
('王五','10008',300,'通过','2016/11/15'),
('王五','10009',200,'通过','2016/11/25'),
('王五','10010',100,'通过','2016/12/15')
CREATE TABLE #T2(XM VARCHAR(20),BH VARCHAR(200),RQ DATE,JE INT)
INSERT INTO #T2 VALUES
('罗六','10000','2016/10/27',10),
('罗六','10000','2016/11/01',20),
('张三','10001','2016/11/03',100),
('张三','10003','2016/11/26',100),
('李四','10004','2016/11/24',100),
('李四','10005','2016/11/24',100),
('李四','10004','2016/11/26',100),
('王五','10008','2016/11/15',150),
('王五','10008','2016/11/19',150),
('王五','10009','2016/12/03',50),
('王五','10009','2016/12/07',50)
;WITH tempa AS (
SELECT xm,zt,COUNT(1) AS 笔数,SUM(JE) AS 金额 FROM #T1 GROUP BY xm,ZT
),tempb AS (
SELECT xm,COUNT(1) AS 笔数,SUM(JE) AS 金额 FROM #T2 GROUP BY XM
),result AS (
SELECT tempa.xm ,
SUM(CASE WHEN zt = '通过' THEN tempa.笔数
ELSE 0
END) AS 通过笔数 ,
SUM(CASE WHEN zt = '通过' THEN tempa.金额
ELSE 0
END) AS 通过金额 ,
SUM(CASE WHEN zt = '拒绝'
OR zt = '放弃' THEN tempa.笔数
ELSE 0
END) AS [拒绝/放弃笔数] ,
SUM(CASE WHEN zt = '拒绝'
OR zt = '放弃' THEN tempa.金额
ELSE 0
END) AS [拒绝/放弃金额] ,
MAX(tempb.笔数) AS 放款笔数 ,
MAX(tempb.金额) AS 放款金额 ,
( SUM(CASE WHEN zt = '通过' THEN tempa.金额
ELSE 0
END) - MAX(tempb.金额) ) AS 待放款金额 ,
ROW_NUMBER() OVER ( ORDER BY MAX(tempb.金额) DESC ) AS 放款排名
FROM tempa
LEFT JOIN tempb ON tempa.xm = tempb.xm
GROUP BY tempa.xm
)
SELECT * FROM (
SELECT * FROM result
UNION
SELECT '合计' AS xm ,
SUM(通过笔数) AS 通过笔数 ,
SUM(通过金额) AS 通过金额 ,
SUM([拒绝/放弃笔数]) AS [拒绝/放弃笔数] ,
SUM([拒绝/放弃金额]) AS [拒绝/放弃金额] ,
SUM([放款笔数]) AS [放款笔数] ,
SUM(放款金额) AS 放款金额 ,
SUM(待放款金额) AS 待放款金额 ,
9999
FROM result
)t
ORDER BY t.放款排名
DROP TABLE #T1,#T2