以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- 请教sql语句高手,这个语句怎么写? (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=77791) |
-- 作者:sloyy -- 发布时间:2015/11/25 15:12:00 -- 请教sql语句高手,这个语句怎么写? 假设本月为201508 上个月为201507 现在想找出这个月违约期数比上个月违约期数少的人(如图红色字体所示) ,本月没有姓名的意味着已还清欠款,也算减少. |
-- 作者:大红袍 -- 发布时间:2015/11/25 15:39:00 -- 上月
select * f rom {表a} where 数据日期 = \'201507\'
本月
select * f rom {表a} where 数据日期 = \'201508\'
联合查询
Select * f rom 上月 a Left Join 本月 b On a.姓名=b.姓名 where b.姓名 is null Or a.违约数 > b.违约数 |
-- 作者:Hyphen -- 发布时间:2015/11/25 15:41:00 -- SEL ECT b.* FROM [表A] a Inner join [表A] b on a.姓名= b.姓名 where dateadd(month,1,(cast(a.数据日期+ \'01\' as date))) = cast(b.数据日期+ \'01\' as date) and a.违约期数> b.违约期数 |
-- 作者:sloyy -- 发布时间:2015/11/25 23:00:00 -- Select * f rom 上月 a Left Join 本月 b On a.姓名=b.姓名 where b.姓名 is null Or a.违约数 > b.违约数 大红袍老师 完整的sql语句怎么写?我折腾了一天,还是得不出结果 |
-- 作者:大红袍 -- 发布时间:2015/11/25 23:07:00 -- Select * f rom (select * f rom {表a} where 数据日期 = \'201507\') a Left Join (select * f rom {表a} where 数据日期 = \'201508\') b On a.姓名=b.姓名 where b.姓名 is null Or a.违约数 > b.违约数
|
-- 作者:sloyy -- 发布时间:2015/11/25 23:22:00 -- 奇怪 ,我就是这样写的, 结果什么都没有 复制你的sql语句上去就对,太不可思议了
|
-- 作者:sloyy -- 发布时间:2015/11/26 10:20:00 -- 找到原因了,我的sql语句包含有表达式列,所以出错,去掉表达式列,结果正确,白白折腾了一天. 非常感谢 大红袍老师 和 Hyphen
的无私帮助.
|
-- 作者:sloyy -- 发布时间:2015/11/26 10:26:00 -- S elect 姓名,a.逾期本金+a.逾期利息+a.逾期罚息 As [逾期本息],a.贷款帐号,a.违约期数,a.数据日期,a.贷款银行 F rom (s elect * f rom {jkqk} where 数据日期 = " &val2 &" And 违约期数 >= " & val3 & ") a Left JOIN (S elect * f rom {jkqk} where 数据日期 = " &val1 &") b on a.[贷款帐号]=b.[贷款帐号] where b.[贷款帐号] Is null Or a.违约期数 > b.违约期数 " 红色的字段出错 |
-- 作者:大红袍 -- 发布时间:2015/11/26 10:36:00 -- a.姓名 |
-- 作者:sloyy -- 发布时间:2015/11/26 14:48:00 -- 姓名 是表达式列,从属另一个表 ,去掉 sql语句就正确,加上就出错. |