2017-10-26 15 views
0

Excelと一緒にMicrosoft VBAを使用し、ADODB接続を使用してシートをデータベースとして扱います。 集計されたサブクエリも使用するSQL集計クエリに関する1つの問題があります。問題は、実際にそれがエラーを投げているため、私は、このようにそれを使用することができないということであると私は変更する方法がわからない、それ他の集約クエリ内の集約サブクエリ

SQLクエリ:

Select inv.[Region], inv.[Org Name], inv.[Bill To Customer Number], inv.[Bill To Customer Name], 
SUM(inv.[AR Global Total Amount]) as "Amount Invoiced", 
COUNT(pay.[Sales Invoice Number]) as "Count Invoices", 
SUM(inv.[AR Global Total Amount]*(inv.[Payment Due Fiscal Date]-inv.[Invoiced Fiscal Date])) as "Sum of Terms Mult", 
SUM(inv.[AR Global Total Amount]*(pay.GL_Min-inv.[Invoiced Fiscal Date])) as "Sum of Pay Days Mult", 
SUM(inv.[AR Global Total Amount]*(pay.GL_Min-inv.[Payment Due Fiscal Date])) as "Sum of Days Late Mult" 
FROM 
(
    Select * 
    From [Data$] as inv 
    WHERE [AR Transaction Sub Type] IN ('Inv', 'Inv-T') 
) a, 
(
    Select [Region], [Org Name], [Bill To Customer Number], [Bill To Customer Name], [Sales Invoice Number], Min([GL Fiscal Date]) as GL_Min 
    FROM [Data$] as pay 
    WHERE [AR Transaction Sub Type] IN ('Cash', 'Cash-T') 
    GROUP BY [Region], [Org Name], [Bill To Customer Number], [Bill To Customer Name], [Sales Invoice Number] 
) t 

WHERE inv.[Sales Invoice Number] = pay.[Sales Invoice Number] AND inv.[Org Name] = pay.[Org Name] AND inv.[AR Global Total Amount]>0 
GROUP BY inv.[Region], inv.[Org Name], inv.[Bill To Customer Number], inv.[Bill To Customer Name] 
ORDER BY SUM(inv.[AR Global Total Amount]) DESC 

問題が第二の上にありますサブクエリ、私は最小の日付をキャプチャしようとするものです。

誰かが適切な構文を教えてくれますか?

ありがとうございます!

+1

あなたのクエリがサブクエリ別名を除いて正しいと思われる、あなたは有料 –

答えて

1

サブクエリエイリアスを除くクエリは正しいようです。これを試してもよろしいですか?

Select inv.[Region], inv.[Org Name], inv.[Bill To Customer Number], inv.[Bill To Customer Name], 
SUM(inv.[AR Global Total Amount]) as "Amount Invoiced", 
COUNT(pay.[Sales Invoice Number]) as "Count Invoices", 
SUM(inv.[AR Global Total Amount]*(inv.[Payment Due Fiscal Date]-inv.[Invoiced Fiscal Date])) as "Sum of Terms Mult", 
SUM(inv.[AR Global Total Amount]*(pay.GL_Min-inv.[Invoiced Fiscal Date])) as "Sum of Pay Days Mult", 
SUM(inv.[AR Global Total Amount]*(pay.GL_Min-inv.[Payment Due Fiscal Date])) as "Sum of Days Late Mult" 
FROM 
(
    Select * 
    From [Data$] as inv 
    WHERE [AR Transaction Sub Type] IN ('Inv', 'Inv-T') 
) inv, 
(
    Select [Region], [Org Name], [Bill To Customer Number], [Bill To Customer Name], [Sales Invoice Number], Min([GL Fiscal Date]) as GL_Min 
    FROM [Data$] as pay 
    WHERE [AR Transaction Sub Type] IN ('Cash', 'Cash-T') 
    GROUP BY [Region], [Org Name], [Bill To Customer Number], [Bill To Customer Name], [Sales Invoice Number] 
) pay 

WHERE inv.[Sales Invoice Number] = pay.[Sales Invoice Number] AND inv.[Org Name] = pay.[Org Name] AND inv.[AR Global Total Amount]>0 
GROUP BY inv.[Region], inv.[Org Name], inv.[Bill To Customer Number], inv.[Bill To Customer Name] 
ORDER BY SUM(inv.[AR Global Total Amount]) DESC 
+0

とINVとtで変更することができますありがとうございました!それはトリックでした!どうもありがとうございます! – rosuandreimihai

+0

あなたは大歓迎です! –