【发布时间】:2017-03-13 12:38:50
【问题描述】:
我在 excel 中有一个数据表,我想通过在 excel vba 中使用 ado 连接从中获取一些信息。我已经写了 3 个查询来完成这项工作,并且会再写几个。数据长这样
让我稍微解释一下。 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]"
这里的主要问题是,是否有办法组合这些查询。
还有一个问题如下所示。
它应该是黄色部分的样子。
但是结果是在总和等于0时sql查询产生的灰色部分不匹配。
【问题讨论】:
标签: sql excel select subquery vba