我需要把周数换算成天数而不重复。
我将使用这个表的例子。
| ID|项目|周末|总数量|
| --|--|--|--|
| 1 |1001REP| 23年9月24日| 0 |
| 1 |1001REP| 23年9月24日| 421 |
| 1 |1001REP| 23年9月24日| 4525 |
| 1 |1001REP| 23年9月24日| 3465 |
| 1 |1001REP| 23年9月24日| 75 |
| 1 |1001REP| 23年9月24日| 943 |
| 1 |1001REP| 23年9月24日| 0 |
| 2 |10AP| 2023年10月1日| 0 |
| 2 |10AP| 2023年10月1日| 543 |
| 2 |10AP| 2023年10月1日| 375 |
| 2 |10AP| 2023年10月1日| 0 |
| 2 |10AP| 2023年10月1日| 0 |
| 2 |10AP| 2023年10月1日| 8945 |
| 2 |10AP| 2023年10月1日| 0 |
我真正想要的是这个例子。
| ID|项目|周末|总数量|天|
| --|--|--|--|--|
| 1 |1001REP| 23年9月24日| 0 |23年9月24日|
| 1 |1001REP| 23年9月24日| 421 |2023年9月25日|
| 1 |1001REP| 23年9月24日| 4525 |2023年9月26日|
| 1 |1001REP| 23年9月24日| 3465 |2023年9月27日|
| 1 |1001REP| 23年9月24日| 75 |2023年9月28日|
| 1 |1001REP| 23年9月24日| 943 |23年9月29日|
| 1 |1001REP| 23年9月24日| 0 |23年9月30日|
| 2 |10AP| 2023年10月1日| 0 |2023年10月1日|
| 2 |10AP| 2023年10月1日| 543 |2023年10月2日|
| 2 |10AP| 2023年10月1日| 375 |2023年10月3日|
| 2 |10AP| 2023年10月1日| 0 |2023年10月4日|
| 2 |10AP| 2023年10月1日| 0 |2023年10月5日|
| 2 |10AP| 2023年10月1日| 8945 |2023年10月6日|
| 2 |10AP| 2023年10月1日| 0 |2023年10月7日|
我试着用这个例子来做,但它为每一列增加了6列。
select a.*, a.weekdate + column_value -1 as Days from table a cross join table (cast(multiset(select level from dual connect by level <= 7 as sys.odcinumberlist)))
我特灵避免在SQL中使用PL SQL代码,但我不得不尝试我所知道的一切。
1条答案
按热度按时间4xy9mtcn1#
在SQL(不仅仅是Oracle的方言)中,结果集是无序的,除非您指定
ORDER BY
子句。您的数据似乎没有任何方法来确定数据应该出现的顺序,因为weekdate
值都是相同的。假设数据是由您尚未与我们共享的某种机制预先排序的,则您可以用途:
其输出:
| ID|项目|工作日|总数|天|
| --|--|--|--|--|
| 1 |1001REP| 2023-09-24 00:00:00| 0 |2023-09-24 00:00:00|
| 1 |1001REP| 2023-09-24 00:00:00| 421 |2023-09-25 00:00:00|
| 1 |1001REP| 2023-09-24 00:00:00| 4525 |2023-09-26 00:00:00|
| 1 |1001REP| 2023-09-24 00:00:00| 3465 |2023-09-27 00:00:00|
| 1 |1001REP| 2023-09-24 00:00:00| 75 |2023-09-28 00:00:00|
| 1 |1001REP| 2023-09-24 00:00:00| 943 |2023-09-29 00:00:00|
| 1 |1001REP| 2023-09-24 00:00:00| 0 |2019 -09- 23 00:00:00|
| 2 |10AP| 2023-10-01 00:00:00| 0 |2023-10-01 00:00:00|
| 2 |10AP| 2023-10-01 00:00:00| 543 |2019 - 02 - 22 00:00:00|
| 2 |10AP| 2023-10-01 00:00:00| 375 |2019 -03 - 12 00:00:00|
| 2 |10AP| 2023-10-01 00:00:00| 0 |2019 -04 - 22 00:00:00|
| 2 |10AP| 2023-10-01 00:00:00| 0 |2023-10-05 00:00:00|
| 2 |10AP| 2023-10-01 00:00:00| 8945 |2023-10-06 00:00:00|
| 2 |10AP| 2023-10-01 00:00:00| 0 |2019 -07 - 22 00:00:00|
如果你有一个按天排序行的机制(通常是另一列),那么就使用它:
fiddle