日期:2014-05-17  浏览次数:20713 次

关于一个sql利率的错误
select cast(count(*)as decimal) from tb_jbkhb group by datepart(year,tb_jbkhb.gcsj),datepart(month,tb_jbkhb.gcsj)/select cast(count(*)as decimal) from tb_yxgzb group by datepart(year,tb_yxgzb.sjjdsj),datepart(month,tb_yxgzb.sjjdsj)

按照年份和月份分组算出利率 两个查询单独都能查出东西 组合一起 就一直报错“消息 156,级别 15,状态 1,第 1 行
关键字 'select' 附近有语法错误。”

------解决方案--------------------
上面表名给弄错了
SQL code

select a.iYear, a.iMonth, a.num/case b.num when 0 then null else b.num from
( 
select cast(count(*)as decimal)num ,datepart(year,tb_jbkhb.gcsj) iYear ,datepart(month,tb_jbkhb.gcsj) iMonth from tb_jbkhb group by datepart(year,tb_jbkhb.gcsj),datepart(month,tb_jbkhb.gcsj)
) a inner join
(
select cast(count(*)as decimal)num,datepart(year,tb_yxgzb.gcsj) iYear ,datepart(month,tb_yxgzb.gcsj)iMonth  from tb_yxgzb group by datepart(year,tb_yxgzb.sjjdsj),datepart(month,tb_yxgzb.sjjdsj)
) b on a.iYear=b.iYear and a.iMonth=b.iMonth