日期:2014-05-18 浏览次数:20613 次
CREATE TABLE #A
(
客户 nvarchar(50),
类型 nvarchar(50),
金额 int,
还款日期 datetime,
还款 int
)
CREATE TABLE #B
(
 客户 NVARCHAR(50),
 比率 INT
)
INSERT INTO #B
SELECT '甲', 10 UNION
SELECT '乙', 20
INSERT INTO #A
SELECT '甲','A', 20, '2012/5/10',NULL UNION ALL
SELECT '甲','B', 40, '2012/5/10',NULL UNION ALL
SELECT '乙','A', 60, '2012/5/19',NULL UNION ALL
SELECT '乙','C', 70 ,'2012/5/20',70 UNION ALL
SELECT '乙','B', 80, '2012/5/20',80
--1、首先取得系统日期,按照系统日期减去还款日期,大于5天的记录提取出来
--SELECT * FROM #A WHERE DATEDIFF(day,还款日期,GETDATE())>5
--2、对于取出的记录,我们判断该客户是否有还款,那么将还款字段按照客户进行求和,那么甲为0,乙为150
--SELECT 客户,SUM(ISNULL(还款,0))还款  FROM #A  GROUP BY 客户
--3、对还款为0的客户,我们将按照类型A的金额进行罚款,罚款比率参照。表B,如果金额小于2,那么就罚款5
INSERT INTO #A
SELECT a.客户,'D',CASE  WHEN 金额*比率/100<=2 THEN 5 ELSE 金额*比率/100 END  金额,GETDATE() 还款日期,NULL 还款 FROM 
(SELECT 客户,SUM(ISNULL(金额,0))金额,SUM(ISNULL(还款,0))还款 FROM #A WHERE DATEDIFF(day,还款日期,GETDATE())>5 
AND 类型 IN ('A','B','C') GROUP BY 客户) AS a
LEFT JOIN  #B b ON b.客户=a.客户
WHERE a.还款=0 
SELECT * FROM #A
DROP TABLE #A
DROP TABLE #B
--甲    A    20    2012-05-10 00:00:00.000    NULL
--甲    B    40    2012-05-10 00:00:00.000    NULL
--乙    A    60    2012-05-19 00:00:00.000    NULL
--乙    C    70    2012-05-20 00:00:00.000    70
--乙    B    80    2012-05-20 00:00:00.000    80
--甲    D    6    2012-05-24 13:51:56.293    NULL 不知道是不是想要这个结果