2016-04-28 266 views
-2

我正在嘗試查詢計算與銷售訂單號相同的銷售訂單號的總銷售額。計算其銷售訂單與飲料的銷售訂單號相同的所有銷售訂單的總銷售額

這裏是我的查詢,但它只是給我提供飲料總銷售額,而不是所有其他項目具有相同的銷售訂單:

SELECT 
SalesOrderNumber,TransactionDate,[ProductClass],[ProductName], Nett 
FROM ((([Sales] 
inner join [Date] 
on [Sales].DateKey = [Date].DateKey) 
inner join [Product] on [Sales].ProductKey = [Product].ProductKey 
inner join [ProductCategory] on [Product].ProductCategoryKey =[ProductCategory].ProductCategoryKey) 
inner join [Store] on [Sales].StoreKey = [Store].StoreKey) 
where SalesOrderNumber in (select SalesOrderNumber from [Sales] where ProductClass = 'Beverages') 
and StoreName = 'XYZ' 
and [FullDate] = '2016-04-27' 
ORDER BY SalesOrderNumber,TransactionDate 

可能有人請幫助我上面?

示例;

Salesorder1: Beverages - 5$ 
      Chicken - 10$ 
Salesorder2: Chicken - 12$ 
      Chips - 8$ 

我只是需要在其中有飲料的總和。所以,根據上面的例子,我應該得到(Beverages + Chicken = 15$),它不應該包括salesorder2

回答

0

你的查詢是非常不可讀的。考慮在將來使用一些打算。

但是,既然您想要一個包含多個產品總和的行,您不能在同一行中選擇類似[ProductClass]和[ProductName]的內容。您必須將它們分組到像SalesOrderNumber這樣常見的東西。

根本不確定下面的查詢是否有效,但只有我更改的是查詢的第一行和最後一行。

SELECT SalesOrderNumber,TransactionDate, SUM(Nett) as sum 
FROM 
(
    (
    ([Sales] inner join [Date] on [Sales].DateKey = [Date].DateKey) 
    inner join [Product] on [Sales].ProductKey = [Product].ProductKey 
    inner join [ProductCategory] on [Product].ProductCategoryKey = [ProductCategory].ProductCategoryKey 
) 
inner join [Store] on [Sales].StoreKey = [Store].StoreKey 
) 
where SalesOrderNumber in 
    (select SalesOrderNumber from [Sales] where ProductClass = 'Beverages') 
    and StoreName = 'XYZ' 
    and [FullDate] = '2016-04-27' 
GROUP BY SalesOrderNumber, TransactionDate 
+0

感謝您的建議!我對這個格式化部分未知的新手很感興趣,但是下次會處理這個問題。而且,你所寫的查詢並沒有給我我想要的結果。但無論如何謝謝嘗試! – Shivang

+0

@Shivang:這是我爲你做的一件小事。不是100%的情況下,但可能會幫助你解決你的問題:http://www.tutorialspoint.com/execute_sql_online.php?PID=0Bw_CjBb95KQMd3d4SHJhajRoUTg –