以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  请教sql语句高手,这个语句怎么写?  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=77791)

--  作者:sloyy
--  发布时间:2015/11/25 15:12:00
--  请教sql语句高手,这个语句怎么写?
假设本月为201508   上个月为201507
现在想找出这个月违约期数比上个月违约期数少的人(如图红色字体所示) ,本月没有姓名的意味着已还清欠款,也算减少.


图片点击可在新窗口打开查看此主题相关图片如下:搜狗截图20151125150658.jpg
图片点击可在新窗口打开查看
 


--  作者:大红袍
--  发布时间: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语句就正确,加上就出错.