【发布时间】:2022-01-10 09:10:08
【问题描述】:
我有一个只有一列和大约 3000 行的表格,它们遵循相同的模式。我想在行的同一字符串中包含每个 TIME 字符串开头的星期几。
原表:
| DATA_TIME_COMBINATION |
|---|
| Monday 3 am HM, 5 am HC, 10 pm HX |
| Saturday AB 6 am, WE 5 pm |
| Sunday Friday AN 50 TU,FG 55 RE, DC 56 JJ |
| Tuesday 10 am, 5 am, 1 am |
| Wednesday 12 pm-9 pm- 1 am |
需要结果:
| DATA_TIME_COMBINATION |
|---|
| Monday 3 am HM, Monday 5 am HC, Monday 10 pm HX |
| Saturday AB 6 am, Saturday WE 5 pm |
| Sunday Friday AN 50 TU, Sunday Friday FG 55 RE, Sunday Friday DC 56 JJ |
| Tuesday 10 am, Tuesday 5 am, Tuesday 1 am |
| Wednesday 12 pm- Wednesday 9 pm- Wednesday 1 am |
提前致谢!
【问题讨论】:
-
请向我们展示您到目前为止所做的尝试。
-
我试图通过首先在 mytable 上创建一个标识行来将时间带到一个单独的行中:ALTER TABLE MYTABLE ADD ID INT IDENTITY
-
然后我将逗号后的 TIME 移动到另一行,方法是:SELECT s.ID, f.value FROM mytable AS s CROSS APPLY STRING_SPLIT(s.[DATA_TIME_COMBINATION], ',') as f ;
-
edit 对您的问题的任何澄清
-
您能否准确地描述问题,即时间是多少?是一位数还是两位数、一个可选空格和“AM”或“PM”(不区分大小写)?永远不要“中午”、“8:15”、“20:15”、“7PST”、“日落”、“下午 1 点辞职”……?
标签: sql sql-server tsql