sql语句:SELECT d.di_Id,d.sl_SerialNumber,(SELECT SUM(pd_Subtotal) FROM tab_purchasedetails WHERE sl_SerialNumber=d.sl_SerialNumber)
sl_Money,s.s_Name,d.di_Time,(SELECT pd_Name FROM tab_purchasedetails WHERE sl_SerialNumber=sl_SerialNumber) di_Remark FROM
tab_disbursements d join tab_staff s on d.s_Id=s.s_Id
我百度过了没有解决成功,求大佬帮忙解决一下,万分感谢,非常感谢🙏
1.(SELECT pd_Name FROM tab_purchasedetails WHERE sl_SerialNumber=sl_SerialNumber),后一个sl_SerialNumber是否要明确下对应表。
2.确定tab_purchasedetails针对同一sl_SerialNumber没有重复行。
检查方式:
select * from tab_purchasedetails where sl_SerialNumber in (select sl_SerialNumber from tab_purchasedetails group by sl_SerialNumber having count (sl_SerialNumber) > 1)
一种是你的查询条件不够准确 另一种是你数据有问题
你是不是漏了什么条件??还是数据库就是有两条一样的数据?
用left join,吧你的表和数据发出来
SELECT
d.di_Id,
d.sl_SerialNumber,
s.s_Name,
d.di_Time,
p.di_Remark,p.sl_Money
FROM
tab_disbursements d
JOIN tab_staff s ON d.s_Id = s.s_Id
left join (select pd_Name as di_Remark,sum(Subtotal) as sl_Money,sl_SerialNumber from tab_purchasedetails)p on p.sl_SerialNumber = d.sl_SerialNumber
不知道你表是怎么样的,试试上面的吧
二楼Mr.DYD不是说得很清楚了吗, (SELECT pd_Name FROM tab_purchasedetails WHERE sl_SerialNumber=sl_SerialNumber)
你这个返回了多行,报错也说得很清楚。