【发布时间】:2012-10-28 18:02:40
【问题描述】:
我在表格中有以下列和数据:
PeriodID Days
1 NULL
2 NULL
3 NULL
4 NULL
5 NULL
然后我有几天应该按如下方式划分行:
-
如果天数
PeriodID Days 1 NULL 2 NULL 3 NULL 4 1 5 1 -
如果 days >= 5 并且 days%5=0(例如 5),我将拥有:
PeriodID Days 1 1 2 1 3 1 4 1 5 1 -
如果 days > 5 并且 days%5!=0(例如 12)我将拥有:
PeriodID Days 1 3 2 3 3 2 4 2 5 2
我可以通过循环来做到这一点,我希望使用一些智能技术或 T-SQL 函数获得更好的解决方案。提前致谢。
【问题讨论】:
-
我有几天的最后一个例子。 12/5=2 和 12%2=2,所以每个时期有 2 天,其余 2 天从乞讨中填充(时期 1 有 3,时期 2 有 3)
-
我不明白您正在使用的逻辑 - 为什么如果小于 5,它们首先分配给更大的时段(4 和 5),而如果大于 5,则分配给非 5 的倍数第一个到较小的时期(1 和 2)?
-
好吧,因为我每次需要有 5 个周期,这是示例数据。在实际情况中,我在条形图中显示此信息,如果没有数据,则需要首先填充右侧条(较大的周期)。无论如何,这不是那么重要,我可以在渲染图表的代码中移动这个逻辑。不管怎样,你所说的关于逻辑的一切,你都理解正确。
标签: sql-server tsql default-value between divide