具有动态列列表的 SQL 数据透视数据
我陷入了一个特定的问题,希望有人能帮助我解决。我有四个表 Product、ProductType、Orders。我想查看“订单”表中的数据,但希望以一种方式查看数据,即每天的数据按每个产品类型下每天销售的产品数量总和进行分组。请查看表结构,我尝试将产品组作为数组列表,并且能够将每个产品类型组的产品数量相加,但无法弄清楚如何以每个产品类型组显示为的方式查看此信息每个日期的总和作为单独的列,我被告知数据透视表或交叉表查询可以做到这一点,我能够在 SQL 中创建一个逗号分隔的数组,但为了在产品类型列表中查找数据,我必须创建一个临时表并使用此处描述的函数 http://databases .aspfaq.com/database/how-do-i-simulate-an-array-inside-a-stored-procedure.html 查找匹配值...但不知道如何获得我想要的视图,我有使用数组或某些动态列表,因为我不知道可能有多少个产品类型组列?
非常感谢您的帮助,提前致谢!
表订单
Order ID ProductID Quantity Date CustomerID Store_locID
1 1 5 10/01/2011 12 1
2 2 10 10/03/2011 4 1
3 3 8 10/03/2011 5 1
4 4 11 10/05/2011 4 2
5 5 5 10/05/2011 14 2
6 6 8 10/06/2011 3 3
表 产品
ProductID Name Desc ProdTypeID
1 Bananas Chiquita 1
2 Apples Green Apples 1
3 Grapes Green Grapes 1
4 Potatoes Idaho potatoes 2
5 Brocolli Green Vrocolli 2
6 Plates Paper Plates 3
表 产品类型
TypeID Name Desc
1 Fruits Fresh Fruits
2 Vegetables Fresh Veggies
3 Kitchen Kitchen stuff
表 商店位置
loc_id city state
1 Atlanta GA
2 New york NY
3 Chicago IL
所需视图 每天按产品类型汇总和分组的已售产品* 请记住,这只是一个示例,因此我无法在我的产品中按产品类型 ID (1,2,3) 进行分组真正的问题可能有数百个产品类型组,因此必须动态生成列列表
City Date Fruits (sum) Vegetables(sum) Kitchen(sum) Group4* Group5*
Atlanta 10/01/2011 5 0 0 0
Atlanta 10/03/2011 18 0 0 0
New York 10/05/2011 0 16 0 0
Chicago 10/06/2011 0 0 8 0
Im stuck on a particular problem im hoping someone can help me out with. I have four tables Product, ProductType, Orders. I want to view Data from the Orders table but want to view it in a way where on each day the data is grouped by the sum of product quantity sold for each day under each ProductType. Please view the table structure, I have tried to get the Product groups as an array list and am able to sum the product quantity up for each product type group but cant figure out how to view this in a way where each producttype group is displayed as a sum for each date as a seperate column, I was told Pivot or a cross tab query could do this, I was able to make a comma delimited array in SQL but in order to find data in the product Type list I had to create a temp table and use a function described here
http://databases.aspfaq.com/database/how-do-i-simulate-an-array-inside-a-stored-procedure.html to find matching values...but dont know how to get the view I want, I have to use an array or some dynamic list because I dont know how many product type group columns there could be?
Your help would be greatly appreciated, thanks in advance!!
Table Order
Order ID ProductID Quantity Date CustomerID Store_locID
1 1 5 10/01/2011 12 1
2 2 10 10/03/2011 4 1
3 3 8 10/03/2011 5 1
4 4 11 10/05/2011 4 2
5 5 5 10/05/2011 14 2
6 6 8 10/06/2011 3 3
Table Products
ProductID Name Desc ProdTypeID
1 Bananas Chiquita 1
2 Apples Green Apples 1
3 Grapes Green Grapes 1
4 Potatoes Idaho potatoes 2
5 Brocolli Green Vrocolli 2
6 Plates Paper Plates 3
Table Product Type
TypeID Name Desc
1 Fruits Fresh Fruits
2 Vegetables Fresh Veggies
3 Kitchen Kitchen stuff
Table Store Locations
loc_id city state
1 Atlanta GA
2 New york NY
3 Chicago IL
Desired View Products sold summed and grouped by Product Type on each day* Please keep in mind this is just a sample so I cant group by proudct type ID (1,2,3) in my real problem there could be hundreds of product Type groups so the list of columns has to be generated dynamically
City Date Fruits (sum) Vegetables(sum) Kitchen(sum) Group4* Group5*
Atlanta 10/01/2011 5 0 0 0
Atlanta 10/03/2011 18 0 0 0
New York 10/05/2011 0 16 0 0
Chicago 10/06/2011 0 0 8 0
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我将这样做:
这是使用 case 语句的扩展:
Here is how I would do that:
Here is the extension using the case statements: