select a.id,c.po_num,a.stock_no,c.plant,c.get_date,b.cust_no,b.type,d.mount,
d.total,a.packageno,c.snp,b.lotno,count(b.lotno) from sgm_ch_check as a
left join
(sys_barcode_1d_y as b,sgm_stock_detail as c,sgm_stock_depart as d)
on (b.packageno = a.packageno and c.po_num =
left(a.stock_no,charindex(' ',a.stock_no)-1) and d.po_no = a.stock_no)
where convert(varchar(10),c.get_date,120) = '2014-02-25' and a.stock_no
like '201%' group by a.packageno,b.lotno order by a.stock_no,a.packageno,
b.lotno asc
提示此行出错,Incorrect syntax near ','.
在mysql下可执行,但是换至mssql就不行了。请问是哪里出了问题?
------解决方案--------------------
SELECT a.id ,
c.po_num ,
a.stock_no ,
c.plant ,
c.get_date ,
b.cust_no ,
b.type ,
d.mount ,
d.total ,
a.packageno ,
c.snp ,
b.lotno ,
COUNT(b.lotno)
FROM sgm_ch_check AS a
LEFT JOIN sys_barcode_1d_y AS b ON b.packageno = a.packageno
INNER JOIN sgm_stock_detail AS c ON c.po_num = LEFT(a.stock_no,
CHARINDEX(' ',
a.stock_no) - 1)
INNER JOIN sgm_stock_depart AS d ON d.po_no = a.stock_no
WHERE CONVERT(VARCHAR(10), c.get_date, 120) = '2014-02-25'
AND a.stock_no LIKE '201%'
GROUP BY a.packageno ,
b.lotno
ORDER BY a.stock_no ,
a.packageno ,
b.lotno ASC
------解决方案--------------------
改成这样试试:
select a.id,c.po_num,a.stock_no,c.plant,c.get_date,b.cust_no,b.type,d.mount,
d.total,a.packageno,c.snp,b.lotno,count(b.lotno)
from sgm_ch_check as a
left join sys_barcode_1d_y as b
on b.packageno = a.packageno
left join sgm_stock_detail as c
on c.po_num = left(a.stock_no,charindex(' ',a.stock_no)-1)
left join sgm_stock_depart as d
on d.po_no = a.stock_no
where convert(varchar(10),c.get_date,120) = '2014-02-25' and
a.stock_no like '201%'
group by a.packageno,b.lotno order by a.stock_no,a.packageno,b.lotno asc
------解决方案--------------------
T-SQL每次join 只允许两个表,而你那个是一个表(a)join 3个表(b,c,d),所以报错
------解决方案--------------------
把:left join
(sys_barcode_1d_y as b,sgm_stock_detail as c,sgm_stock_depart as d)
on (b.packageno = a.packageno and c.po_num =
left(a.stock_no,charindex(' ',a.stock_no)-1) and d.po_no = a.stock_no)
改成3个left join:
left join sys_barcode_1d_y as b
on b.packageno = a.packageno
left join sgm_stock_detail as c
on c.po_num = left(a.stock_no,charindex(' ',a.stock_no)-1)
left join sgm_stock_depart as d
on d.po_no = a.stock_no
------解决方案--------------------
(sys_barcode_1d_y as b,sgm_stock_detail as c,sgm_stock_depart as d)
逗号关联,应该是inner join