【问题标题】:How to INSERT repeated values like (a,b,c,d,a,b,c,d....) in DB table?如何在数据库表中插入重复值,如 (a,b,c,d,a,b,c,d....)?
【发布时间】:2022-11-23 02:42:18
【问题描述】:

我尝试制作工作时间表。

我有一张像这样的桌子:

shift_starts_dt shift_type
2022-01-01 08:00:00 Day
2022-01-01 20:00:00 Night
2022-01-02 08:00:00 Day
2022-01-02 20:00:00 Night
2022-01-03 08:00:00 Day
2022-01-03 20:00:00 Night
2022-01-04 08:00:00 Day
2022-01-04 20:00:00 Night

等..直到今年年底

我不知道如何向表中添加重复值。

我想添加包含“A”、“B”、“C”、“D”的“shift_name”列(这就像团队名称)

我应该使用什么查询来获得下一个结果:

shift_starts_dt shift_type shift_name
2022-01-01 08:00:00 Day 'A'
2022-01-01 20:00:00 Night 'B'
2022-01-02 08:00:00 Day 'C'
2022-01-02 20:00:00 Night 'D'
2022-01-03 08:00:00 Day 'A'
2022-01-03 20:00:00 Night 'B'
2022-01-04 08:00:00 Day 'C'
2022-01-04 20:00:00 Night 'D'

. . . . . .

【问题讨论】:

  • “到年底”是什么意思?您数据中的所有日期都是同一日期2022-01-01。请说清楚。
  • 抱歉,问题已被编辑。我的意思是该表就像从 2022-01-01 到 2022-12-31 的日历。每天分为两部分 - 从 8:00 开始工作,下一个从 20:00 开始

标签: postgresql sql-insert schedule


【解决方案1】:

只有一个选项使用 row_number()choose() 的模数

例子

Declare @YourTable Table ([shift_starts_dt] datetime,[shift_type] varchar(50))  Insert Into @YourTable Values 
 ('2022-01-01 08:00:00','Day')
,('2022-01-01 20:00:00','Night')
,('2022-01-02 08:00:00','Day')
,('2022-01-02 20:00:00','Night')
,('2022-01-03 08:00:00','Day')
,('2022-01-03 20:00:00','Night')
,('2022-01-04 08:00:00','Day')
,('2022-01-04 20:00:00','Night')
 
Select *
      ,ShiftName = choose((row_number() over (order by [shift_starts_dt]) % 4)+1,'D','A','B','C')
 from @YourTable

结果

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-21
    • 2012-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多