1

我有两个单独的 csv 表,其中包含可以通过另一个网页添加的自动数据。这不是静态数据,它是动态的和可变的。

这是我的目标:

  1. 编写一个网页,显示每个产品一年的销售额(数量和价格)表。用户必须能够选择年份。

到目前为止,我的查询已经到了这一步:

SELECT Products.Name, SUM(MonthlySales.SalesVolume) as 'Total Sales'
FROM Products
INNER JOIN MonthlySales 
ON Products.Id=MonthlySales.Id
GROUP BY Products.Name;

最重要的是,我需要能够使用 php (我有能力)传递一个值(年份)以进一步缩小搜索范围。我会以正确的方式解决这个问题吗?

示例数据:

每月销售.csv

Id      ProductCode Month   Year    SalesVolume
23041   121           1     1980    983
23042   121           2     1980    960
23043   121           3     1980    939
23044   121           4     1980    927
23045   121           5     1980    931
23046   121           6     1980    950
23047   121           7     1980    975

产品.csv

Id,Name,Price
121,Jelly beans,6.79
122,Banana milkshake powder,8.31
123,Edam Cheese,18.73
124,Hairnet,8.05
125,Aubergine jam,2.66

最后,我需要显示如下内容:

您选择的年份:1980

Name                      Price      Volume
Jelly Beans               6.79       11000
Banana milkshake powder   8.31       15000

任何帮助将非常感激。

4

1 回答 1

1

您所拥有的将起作用,只要那Name是独一无二的,但这可能不是最好的方法。这可能更准确,因为您将根据 PKId而不是Name字段来确定组。

DECLARE @year char(4) = /*your year - datatype should be same as your year col*/;
DECLARE @month int = /*your month - datatype should be same as your month col*/;

SELECT Products.Name, Products.Price, Sales.totalSales AS 'Total Sales'
FROM Products
INNER JOIN (
            SELECT MonthlySales.ProductCode, 
                   SUM(MonthlySales.SalesVolume) AS 'totalSales'
            FROM MonthlySales 
            WHERE MonthlySales.Year = @year AND MonthlySales.Month = @month 
            GROUP BY MonthlySales.ProductCode
           ) AS Sales ON Sales.Id = Products.ProductCode
于 2013-08-21T18:21:40.663 回答