按发生顺序组织SQL数据

时间:2018-02-19 20:11:13

标签: sql oracle

我正在尝试根据项目发送日期来组织我的SQL数据。

我在供应链工作,想要将我的数据作为第一个sku的“初始”和基于PO的其他sku的“其他”。

如果PO 1111有sku 123进入1/2/18并且sku 543在4/2/18进来,那么我想首先出现sku 123,然后在它旁边说'initial'。而sku 543排在第二位且说“其他”。

同样从上面,如果PO 12345在1/2/18上具有sku 123并且在1/4/18上具有sku 543,则标记为初始或其他。

我还有版本1和版本2,它们是我需要区分的彼此重复的版本。

例如:

SELECT SKU, PO, DATE
FROM TABLE_DATA; 

如果我需要使用PL / SQL,那么我很乐意接受任何建议或指导。我觉得好像我的请求需要IF声明或CASE声明。

编辑:

我有多个PO绑定到一个SKU。我需要系统也理解当它是版本1或版本2.如果是版本1和PO 1111与SKU 123和SKU 543我想要它按PO和日期订购它。

1 个答案:

答案 0 :(得分:3)

您可以使用caserow_number()

select t.*,
       (case when row_number() over (partition by po order by date asc) = 1
             then 'initial'
             else 'other'
        end)
from table_data t;