如何在Excel中结合这些SQL查询

我在Excel中有一个数据表,我想通过在excel vba中使用ado连接从它获得一些信息。 我已经写了三个查询来完成这项工作,并会写更多。 数据看起来像这样, 数据

让我稍微解释一下。 Order No是工作的工作顺序。 Resource Id实际上是一台机器的唯一编号。 Duru Kodu是代码解释了Bitim Zamani (结束时间)和Basl Zamani (开始时间)之间停止的原因。 Qty是生产数量。

我只显示EM22的数据,但当然有更多的机器。

停止代码实际上分为两个计划和未计划。 计划代码是D00 D10 D11 。 从D01到D30的其他代码是非计划停止。

我想要一个特定资源ID的总计划停止,计划停止和数量,并按订单号将它们分组

我不能提出一个能够一次完成所有事情的查询,但将其分成三份。 第一个获得计划外停止。 第二个是计划停止,最后一个是数量。

 'Specified Machine Number(EM22) makine = Sheets("Dashboard").Cells(2, 11).Value 'Unplanned sorgu1 = "select [Resource Id], [Order No], Sum(([Bitim Zamani]-[Basl Zamani])*1440) as Sure" sorgu1 = sorgu1 + " from [Data$] where [Resource Id] = " + "'" + makine + "'" sorgu1 = sorgu1 + " AND " sorgu1 = sorgu1 + "([Duru Kodu] = 'D01' OR [Duru Kodu] = 'D02' OR [Duru Kodu] = 'D03' OR [Duru Kodu] = 'D04' OR [Duru Kodu] = 'D05' OR [Duru Kodu] = 'D06' OR [Duru Kodu] = 'D07' OR [Duru Kodu] = 'D08' OR [Duru Kodu] = 'D09' OR [Duru Kodu] = 'D12' OR [Duru Kodu] = 'D13' OR [Duru Kodu] = 'D14' OR [Duru Kodu] = 'D15' OR [Duru Kodu] = 'D16' OR [Duru Kodu] = 'D17' OR [Duru Kodu] = 'D18' OR [Duru Kodu] = 'D19' OR [Duru Kodu] = 'D20' OR [Duru Kodu] = 'D21' OR [Duru Kodu] = 'D22' OR [Duru Kodu] = 'D23' OR [Duru Kodu] = 'D24' OR [Duru Kodu] = 'D25' OR [Duru Kodu] = 'D26' OR [Duru Kodu] = 'D27' OR [Duru Kodu] = 'D28' OR [Duru Kodu] = 'D29' OR [Duru Kodu] = 'D30')" sorgu1 = sorgu1 + "GROUP BY [Resource Id], [Order No]" 'Planned sorgu2 = "SELECT Sum(([Bitim Zamani]-[Basl Zamani])*1440) as Surem from [Data$] where [Resource Id] = " + "'" + makine + "'" + " AND " sorgu2 = sorgu2 + "([Duru Kodu] = 'D00' OR [Duru Kodu] = 'D10' OR [Duru Kodu] = 'D11') " sorgu2 = sorgu2 + "GROUP BY [Resource Id], [Order No]" 'Quantity sorgu3 = "SELECT Sum([Qty]) as Uretim from [Data$] where [Resource Id] =" + "'" + makine + "'" + " group by [Resource Id],[Order No]" 

这里的主要问题是,如果有一种方法来结合这些查询。
另外还有一个问题,如下所示。 它应该是什么,就像在黄色部分。 这是什么

但是,当sum等于0时,sql查询产生的灰色部分的结果不匹配。

认为下面的代码应该工作。

 'Specified Machine Number(EM22) makine = Sheets("Dashboard").Cells(2, 11).Value sorgu1 = "SELECT [Resource Id], " & _ "[Order No], " & _ "Sum(([Bitim Zamani]-[Basl Zamani])*IIF(([Duru Kodu] = 'D00' OR [Duru Kodu] = 'D10' OR [Duru Kodu] = 'D11'),0,1440)) as Sure " & _ "Sum(([Bitim Zamani]-[Basl Zamani])*IIF(([Duru Kodu] = 'D00' OR [Duru Kodu] = 'D10' OR [Duru Kodu] = 'D11'),1440,0)) as Surem " & _ "FROM [Data$] " & _ "WHERE [Resource Id] = '" & makine & "' AND " & _ " [Duru Kodu] <> '0' " "GROUP BY [Resource Id], [Order No]" 

注意:对于[Duru Kodu] <> '0'可能需要更改为Not IsNull([Duru Kodu]) (我认为这是正确的语法),如果在您的电子表格中显示为0实际上是空的。