【发布时间】:2015-04-15 23:47:53
【问题描述】:
我已经花了 2 天的时间试图让它工作,但还没有接近解决这个问题。
我将数据汇总在一起以制作价格表视图
| Category | Product | QtyFrom | QtyTo | Price |
------------------------------------------------------------
| Category#1 | Product#1 | 1 | 9 | 4.99 |
| Category#1 | Product#2 | 1 | 9 | 5.99 |
| Category#1 | Product#3 | 1 | 9 | 6.99 |
| Category#1 | Product#1 | 10 | 49 | 4.75 |
| Category#1 | Product#2 | 10 | 49 | 5.75 |
| Category#1 | Product#3 | 10 | 49 | 6.75 |
| Category#1 | Product#1 | 50 | 99 | 4.50 |
| Category#1 | Product#2 | 50 | 99 | 5.50 |
| Category#1 | Product#3 | 50 | 99 | 6.50 |
| Category#1 | Product#1 | 100 | 999 | 4.25 |
| Category#1 | Product#2 | 100 | 999 | 5.25 |
| Category#1 | Product#3 | 100 | 999 | 6.25 |
| Category#2 | Product#4 | 1 | 9 | 4.99 |
| Category#2 | Product#5 | 1 | 10 | 5.99 |
| Category#2 | Product#6 | 1 | 9 | 6.99 |
| Category#2 | Product#4 | 10 | 49 | 4.75 |
| Category#2 | Product#5 | 11 | 50 | 5.75 |
| Category#2 | Product#6 | 10 | 49 | 6.75 |
| Category#2 | Product#4 | 50 | 99 | 4.50 |
| Category#2 | Product#5 | 51 | 99 | 5.50 |
| Category#2 | Product#6 | 50 | 99 | 6.50 |
我需要交叉制表以生成价目表。最终结果将按需要返回结果的单个类别查询,如
| Category#1 | 1 | 9 | 10 | 49 | 50 | 99 |
--------------------------------------------------------
| Product#1 | 4.99 | 4.75 | 4.50 |
| Product#2 | 5.99 | 5.75 | 5.50 |
| Product#3 | 6.99 | 6.75 | 6.50 |
或喜欢
| Category#2 | 1 | 9 | 1 | 10 | 10 | 49 |
--------------------------------------------------------
| Product#4 | 4.99 | | 4.75 |
| Product#5 | | 5.99 | |
| Product#6 | 6.99 | | 6.75 |
正如您所看到的,根据输入数据的人员,他们可能会犯错误并在组内错位价格区间。但我仍然需要返回 3 个最低的 QtyFrom/QtyTo 行(一旦我有了这些数据,我将生成一个单独的报告,仅显示每个类别的价格中断数量,以便他们可以在生成价目表之前运行该报告并调整价格中断)
某些类别可能没有 3 次降价,而其他类别可能有更多。但我总是需要 3 列。
使用 SQL Server 2014
提前谢谢你。
【问题讨论】:
-
您是否要根据产品列加入两个表?
-
您能展示一下您 2 天辛勤工作的一些尝试吗?
-
@Mee 现在只有 1 个视图可供使用。这 2 个示例是我从视图中的数据中需要的。
-
@Mihai 我没有保存我所做的任何事情。我的前几个我尝试派生表来显示使用相同产品和类别的 QtyFrom 的最小值,但我无法让它与 QtyFrom 和 QtyMin 一起使用。最后一次尝试是使用派生表和派生列来做同样的事情,但仍然无法思考如何让这一切为返回 QtyFrom 和 QtyTo 的 3 列工作,然后匹配行
标签: sql sql-server pivot crosstab sql-server-2014