私はクエリに問題があります。私は月と年を抽出している注文が非常に多く、毎月の価格のすべてを合計する必要がありますそして年。私が解決策を考え出す唯一の方法は、反復してコストのかかる比較を多数行うことです。これはリレーショナルデータベースの目的を破るようです。小計にしばしば割引が適用されるため、価格は私が持っているクエリで計算されています。私はすべての必要なテーブルを結合し、一致しているが、価格計算のために私は組み込みのSUM()関数を使用することはできません。前もって感謝します!特定の月に発生した注文の合計価格
EDIT:ここにコードがあります。私は今日は明らかにスーパーに散在しています。
`SELECT dbo.SalesOrder.SalesOrderNo
,dbo.SalesOrder.CustomerID
,(dbo.InvoiceDetails.ExtendedPrice * (1 - dbo.Invoice.DiscountPct/100)) AS [Price]
,dbo.Customers.NAME AS [Customer Name]
,dbo.Customers.SalesRepID
,dbo.Employees.FirstName + dbo.Employees.LastName AS [SalesRepName]
,dbo.Estimate.DateCreated AS [Date Quoted]
,dbo.SalesOrder.OrderDate AS [Date Ordered]
,dbo.Invoice.BillingDate AS [Date Invoiced]
,MONTH(dbo.Estimate.DateCreated) AS [Month Quoted]
,MONTH(dbo.SalesOrder.OrderDate) AS [Month Ordered]
,MONTH(dbo.Invoice.BillingDate) AS [Month Invoiced]
,YEAR(dbo.Estimate.DateCreated) AS [Year Quoted]
,YEAR(dbo.SalesOrder.OrderDate) AS [Year Ordered]
,YEAR(dbo.Invoice.BillingDate) AS [Year Invoiced]
FROM SalesOrder
INNER JOIN Invoice ON Invoice.SalesOrderID = SalesOrder.SalesOrderID
INNER JOIN InvoiceDetails ON InvoiceDetails.InvoiceID = Invoice.InvoiceID
INNER JOIN Customers ON Customers.CustomerID = SalesOrder.CustomerID
INNER JOIN SalesReps ON Customers.SalesRepID = SalesReps.SalesRepID
INNER JOIN Employees ON Employees.EmployeeID = SalesReps.EmployeeID
INNER JOIN Estimate ON Estimate.EstimateID = SalesOrder.EstimateID
WHERE dbo.Invoice.Approved = '1'
AND (YEAR(dbo.Invoice.BillingDate) >= YEAR(GETDATE()) - 1)
AND (YEAR(dbo.Estimate.DateCreated) >= YEAR(GETDATE()) - 1)
AND (YEAR(dbo.SalesOrder.OrderDate) >= YEAR(GETDATE()) - 1)`
問題が何であるかは不明ですが、価格をまとめて月単位でグループ化するだけで問題ありません。 –
いくつかのサンプルデータを使用してサンプルスキーマを投稿した場合は便利です。しかし、これは非常に単純な質問のように思われるので、私は何かが起こっていることが分かりませんか? – pmbAustin
サンプル入力データセットと期待される出力を提供できますか? –