2016-04-28 178 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 –