大家请看看下面的SQL语句,其目的是先将一个表b进行条件查询,然后另外一个表a左连接b表,对b.zslbdm进行分组统计,结果报了如下错误:服务器: 消息 170,级别 15,状态 1,行 1
第 1 行: ',' 附近有语法错误。
服务器: 消息 156,级别 15,状态 1,行 7
在关键字 'on' 附近有语法错误。SQL 语句如下:
SELECT a.zslb,count(b.zslbdm) as Bmrs
FROM Td_zslbdm a LEFT OUTER JOIN
          (SELECT b.*
         FROM T_bmk b
         WHERE (DATEDIFF(day, '2004-1-1', b.xg_date) > 0) 
                AND (DATEDIFF(day, '2004-7-6', b.xg_date) < 0))  
on a.Zslbdm = b.zslbdm
group by a.zslb

解决方案 »

  1.   

    SELECT a.zslb,count(b.zslbdm) as Bmrs//中的","改为西文字符中的","试一下,
      

  2.   

    JOIN
              (SELECT b.*
             FROM T_bmk b
             WHERE (DATEDIFF(day, '2004-1-1', b.xg_date) > 0) 
                    AND (DATEDIFF(day, '2004-7-6', b.xg_date) < 0))  
    on a.Zslbdm = b.zslbdm//
    好像是这样吧:join 表名 on a.Zslbdm = b.zslbdm
      

  3.   

    (SELECT b.*
             FROM T_bmk b
             WHERE (DATEDIFF(day, '2004-1-1', b.xg_date) > 0) 
                    AND (DATEDIFF(day, '2004-7-6', b.xg_date) < 0))  这个子查询需要一个别名
      

  4.   

    哦,我说错了,应该是:
    SELECT a.zslb,count(b.zslbdm) as Bmrs
    FROM Td_zslbdm a LEFT OUTER JOIN
              (SELECT *
             FROM T_bmk 
             WHERE (DATEDIFF(day, '2004-1-1', xg_date) > 0) 
                    AND (DATEDIFF(day, '2004-7-6', xg_date) < 0)) b
    on a.Zslbdm = b.zslbdm
    group by a.zslb