2014-10-01 87 views
2

这是我的表目前看起来如何如何根据我的结果集创建序列号?

Month Product  Value 
--------------------------------- 
    1  Shoes  12.00 
    1  Jacket  15.00 
    2  Shirt  3.00 

我需要补充的产生增加每月每一次的月变化重置一个MonthlySaleID列,像这样

Month Product  Value MonthlySaleID 
------------------------------------------------ 
    1  Shoes  12.00 1 
    1  Jacket  15.00 2 
    2  Shirt  3.00 1 

任何线索将是巨大的

+0

我们可以为您提供一个简单的答案。但我想知道更多的一般问题,因为我有一种感觉,我们正在重新思考解决方案。 – Sebas 2014-10-01 22:54:34

+1

我不知道我可以添加更多的问题。你需要澄清?我被要求生成一个报告,其行为就像我在每个月递增的id所描述的那样 – totalitarian 2014-10-01 22:56:04

+0

因此,你不需要一个新的列,在这里你去。怎么看?特别是对于报告,他们通常会要求进行一些不属于NF1-6的可视化定制。如果可能的话,最好为它们创建专用视图并保持标准模型不变。 – Sebas 2014-10-01 23:05:03

回答

1

你可以用这个观点再尝试:

CREATE OR REPLACE VIEW vw_rpt_sales AS 
SELECT month, product, value, RANK() OVER (PARTITION BY month ORDER BY Product) AS MonthlySaleID 
FROM 
    originaltable; 

无法测试排名函数,理论上它应该返回你想要的。我按产品订购,因为你的问题似乎没有你有销售ID信息。但是如果你有它,我想最好是通过SaleID订购。

+0

我认为你应该尝试'ROW_NUMBER'而不是'RANK' – Aramillo 2014-10-02 13:35:41

+0

对不起,这不起作用 – totalitarian 2014-10-02 20:30:31

+0

'这不行'。你能更精确吗?也。我问你更多的信息,因为它看起来像你不希望任何人来帮助你。 – Sebas 2014-10-02 20:41:46