C# join语句中列的一部分之和
钢铁订单C# join语句中列的一部分之和,c#,sql,ms-access,C#,Sql,Ms Access,钢铁订单 OrderNumber ----------- 0000843989 0000843124 0000881234 0000123456 ----------- SN | PanelBuildTime ------------------------------------- 0000843989-8R8-4-0 | 360 0000843989-8R8-4-1 | 200 0000843989-8R8-4-2
OrderNumber
-----------
0000843989
0000843124
0000881234
0000123456
-----------
SN | PanelBuildTime
-------------------------------------
0000843989-8R8-4-0 | 360
0000843989-8R8-4-1 | 200
0000843989-8R8-4-2 | 900
0000843989-8R8-4-3 | 360
0000843989-8R8-4-4 | 460
0000843989-8S-1-0 | 220
0000843989-8-2-0 | 360
etc..
-------------------------------------
定稿打印标签
OrderNumber
-----------
0000843989
0000843124
0000881234
0000123456
-----------
SN | PanelBuildTime
-------------------------------------
0000843989-8R8-4-0 | 360
0000843989-8R8-4-1 | 200
0000843989-8R8-4-2 | 900
0000843989-8R8-4-3 | 360
0000843989-8R8-4-4 | 460
0000843989-8S-1-0 | 220
0000843989-8-2-0 | 360
etc..
-------------------------------------
所需的结果将是:
OrderNumber | PanelBuildTime
-----------------------------
0000843989 | 2860
etc..
-----------------------------
我试过什么?
Select OrderNumber, Sum(PanelBuildTime) from SteelOrders
INNER JOIN FinalizedPrintedStickers
ON
SteelOrders.OrderNumber = LEFT(FinalizedPrintedStickers.SN,10)
不幸的是,我不知道如何在steelorder表中的每个项目上添加一个WHERE
子句
另外(因为我在我的C代码中使用oledb从钢订单表中读取),我尝试每次读取
OleDbDataReader
都执行Select Sum(PanelBuildtime),其中ordernumber=reader[“ordernumber”]
,但是速度非常慢您可以按订单号分组以显示构建时间的摘要
Select OrderNumber, Sum(PanelBuildTime) from SteelOrders
INNER JOIN FinalizedPrintedStickers
ON
SteelOrders.OrderNumber = LEFT(FinalizedPrintedStickers.SN,10)
GROUP BY SteelOrders.OrderNumber
您可以按订单号分组,以显示生成时间的摘要
Select OrderNumber, Sum(PanelBuildTime) from SteelOrders
INNER JOIN FinalizedPrintedStickers
ON
SteelOrders.OrderNumber = LEFT(FinalizedPrintedStickers.SN,10)
GROUP BY SteelOrders.OrderNumber
因为您可能经常希望使用不同的条件来创建不同的列,所以您还应该了解
case
语句:
Select OrderNumber, Sum(case when SteelOrders.item = '0000843989' then PanelBuildTime end)
from SteelOrders INNER JOIN
FinalizedPrintedStickers
ON SteelOrders.OrderNumber = LEFT(FinalizedPrintedStickers.SN,10)
在Access中(对不起,我错过了标签),您必须使用IIF
而不是case
哦,根据你上面的评论,你需要一个分组:
Select OrderNumber, Sum(PanelBuildTime)
from SteelOrders INNER JOIN
FinalizedPrintedStickers
ON SteelOrders.OrderNumber = LEFT(FinalizedPrintedStickers.SN,10)
group by OrderNumber
因为您可能经常希望使用不同的条件来创建不同的列,所以您还应该了解case
语句:
Select OrderNumber, Sum(case when SteelOrders.item = '0000843989' then PanelBuildTime end)
from SteelOrders INNER JOIN
FinalizedPrintedStickers
ON SteelOrders.OrderNumber = LEFT(FinalizedPrintedStickers.SN,10)
在Access中(对不起,我错过了标签),您必须使用IIF
而不是case
哦,根据你上面的评论,你需要一个分组:
Select OrderNumber, Sum(PanelBuildTime)
from SteelOrders INNER JOIN
FinalizedPrintedStickers
ON SteelOrders.OrderNumber = LEFT(FinalizedPrintedStickers.SN,10)
group by OrderNumber
啊,你已经包括了一个字符串文字,有数千个订单,它们都需要构建时间的总和,这个总和是一个,所以你需要一个组,显示每个订单号的构建时间的总和。我已经改变了我的答案。啊,你已经包括了一个字符串文字,有数千个订单,它们都需要构建时间的总和,这个总和是一个,所以你需要一个组,到那时显示每个订单号的构建时间的总和。我已更改了答案。您不能将case语句与Access一起使用。您不能将case语句与Access一起使用。