C# SQL表的和与差
我有三张桌子C# SQL表的和与差,c#,sql,C#,Sql,我有三张桌子 BNT ref Size a 104545 25 c 304654 50 a 104545 70 c 704564 75 tblTaillePointage BNT ref Size a 104545 20 c 304654 0 a 104545 70
BNT ref Size
a 104545 25
c 304654 50
a 104545 70
c 704564 75
tblTaillePointage
BNT ref Size
a 104545 20
c 304654 0
a 104545 70
c 704564 75
tblDefectue
BNT ref Size
a 104545 1
c 304654 50
c 704564 0
我想要这个:
BNT ref Size
a 104545 4
c 304654 0
c 704564 0
也就是说,当BNT和ref等于tblTaillePointage时,tblDefectue,tblTaille将其显示为一行,得到4,(25+70-(20+70+1)
我尝试了此查询,但未产生所需的结果:
SELECT ID_OF, Col, BNT, SUM(size1), SUM(size2), SUM(size3), SUM(size4), SUM(size5), SUM(size6), SUM(size7), SUM(size8), SUM(size9), SUM(size10), SUM(Total)
FROM tblTailleALL
GROUP BY ID_OF, Col, BNT
您可以在三个表上运行
UNION ALL
,从最后两个表中选择带有负号的size
。然后,您可以按ref
和btn
分组,并将大小放入SUM()
,如下所示:
SELECT btn, ref, SUM(size) FROM (
SELECT btn, ref, size FROM tblTaille
UNION ALL
SELECT btn, ref, -size FROM tblTaillePointage
UNION ALL
SELECT btn, ref, -size FROM tblDefectue
) all_data
GROUP BY btn, ref
这是一个。像这样的东西吗
SELECT t.BNT, t.ref, SUM(t.size) - SUM(tp.size) - SUM (d.size) as Size
FROM tblTaille t
JOIN tblTaillePointage tp
ON t.BNT = tp.BNT
AND t.ref = tp.ref
JOIN tblDefectuetp d
ON t.BNT = d.BNT
AND t.ref = d.ref
GROUP BY t.BNT, t.ref
选择ID_OF、Col、BNT、SUM(size1)、SUM(size2)、SUM(size3)、SUM(size4)、SUM(size5)、SUM(size6)、SUM(size7)、SUM(size8)、SUM(size9)、SUM(size10)、SUM(总计)来自tblTailleALL GROUP BY ID_OF,Col,bnt这里有一些专栏我没有放,因为它太长了。@user2967732否决票最可能的原因是你没有在你的问题主体中显示你尝试了什么,尽管你确实尝试了一些东西,正如你的评论所示。最好在问题中显示你的尝试,因为与从头开始编写代码相比,纠正错误通常更容易,也更有教育意义。