我对SQL相当陌生,我试图让我的头解决以下问题 - 我试图获得一个产品细分清单,以便我们可以看到每个产品的数量一个已经售出,每年每年获取产品数量细分
我有两个表;订单(包含JobNum和Date)和产品(具有JobNum,Fig,Fype,Size和Quantity字段)。由于产品是定制的产品是无花果,类型和尺寸领域的融合。例如:为了得到我所能做创建的所有变型产品的列表:
SELECT DISTINCT Fig,
Type,
Size
FROM Product;
而获得的数量在一个日历年度的所有产品的列表,这个查询似乎工作:(日期是格式'DD-MM-YYYY' 因此LIKE '2002%' 逐年进行筛选)
SELECT product.fig,
product.type,
product.size,
Sum(product.qty) AS Quantity
FROM orders.dbf
INNER JOIN product.dbf
ON orders.jobnum = product.jobnum
WHERE orders.date LIKE '%2002'
GROUP BY product.fig,
product.type,
product.size
这给数据为1年输出是这样的:
Fig Type Size Qty
AA B 2 1
我的问题是我怎么能拉出数据获取像这样的输出?
Fig Type Size 2001 2002 2003...
AA B 2 1 2 4
BB C 4 4 6 7
我能想到如何在程序中生成这个,但我想看看是否可以在SQL中执行?
非常感谢提前。
编辑 - 我可以指出,在某些情况下Product.Type可以是空白的,并且在某些年份有可能销售产品的零个实例,因此在那一年相应的数量可能是空白的或0.
您正在使用哪个数据库? MSSQL,MySQL,PostgreSQL,Oracle,DB/2? – bernhardrusch
它是一个DBASE数据库。我们正在将所有数据转移到MSSQL,但这个数据尚未完成。 – Lambdafive
在MSSQL上,您可以使用PIVOT语句来执行您想要的操作。在DBASE上,我不知道。数据集有多大?除了图形,类型和大小之外,您是否考虑过按Year分组,然后将数据复制到Excel中,例如,您可以轻松地在列上逐年转换数据? – Dan