2016-10-31 7 views
0

データシートがExcelにあり、ExcelからExcel接続を使用して情報を取得したいと考えています。私はこの作業を達成するために3つのクエリーを書いており、もう少し書く予定です。データは次のようになります。 DataExcelでこれらのSQLクエリを組み合わせる方法

少し説明しましょう。 Order Noはジョブの作業順序です。 Resource Idは、実際にはマシンの一意の番号です。 Duru Koduは、Bitim Zamani(終了時刻)とBasl Zamani(開始時刻)の間の停止の理由を説明するコードです。 Qtyは生産量です。

私はEM22だけのデータを示しましたが、さらに多くのマシンがあります。

ストップコードは、実際には2つに分かれており、計画されているものと計画されていないものがあります。計画のコードはD00 D10 D11です。 D01からD30までの他のコードは、計画外の停止です。

特定のリソースIDの計画停止、計画外停止、数量を合計し、それらをグループ化する必要があります。

一度にすべての処理を実行することはできませんでしたが、 。計画外の停止を得るための最初のもの。 2番目は計画停止のためのもので、最後のものは数量のためのものです。

'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]" 

ここでの主な問題は、これらのクエリを結合する方法があるかどうかということです。
また、以下に示す別の問題があります。 黄色い部分のようになります。 what it is

しかし、結果は、SQLクエリによって生成されるグレー部分にある合計が0

答えて

1

に等しい場合、私は次のコードは動作すべきだと思う一致をdoesntの。

'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]" 

注:0としてスプレッドシートに表示値が実際にnullの場合[Duru Kodu] <> '0'のためのテストは、(私はそれが正しい構文だと思います)Not IsNull([Duru Kodu])のようなものに変更する必要があるかもしれません。

+0

私はこれをMacで動作させる方法を見つけるとすぐにこれを試します。 –

+0

2番目の合計機能を変更できますか?あなたは条件を等しいと書きました。そのうちの1つはD01〜D30である必要があります。あなたはそれを指示するだけで十分です。それが働いています。ありがとう。 :) –

+1

@alisrn - 第2の和関数は、第1の関数がゼロを掛けている場合には1440を掛け、その逆も同様である。したがって、「Duru Kodu」の価値に応じて、2つの合計の1つだけが各レコードに追加されます。 – YowE3K

関連する問題