【发布时间】:2019-10-14 15:06:40
【问题描述】:
我有一个月的数据。
DATE | AMOUNT
04/01/2019 | 3437824
04/02/2019 | 234834
04/03/2019 | 2343478
.
.
.
04/30/2019 | 343729
我想更改日期列给我这样的东西
OLDDATE | DATE | AMOUNT
04/01/2019 | 01/01/2019 | 3437824
04/02/2019 | 02/01/2019 | 234834
04/03/2019 | 03/01/2019 | 2343478
.
.
.
04/12/2019 | 12/01/2019 | 328456
04/13/2019 | 01/02/2019 |845754
04/14/2019 | 02/02/2019 |845754
.
.
04/24/2019 | 12/02/2019 |845754
04/25/2019 | 01/03/2019 |845754
04/26/2019 | 02/03/2019 |845754
.
.
.
04/30/2019 | 06/03/2019 | 343729
我尝试在 while 循环中使用 switch case 来实现同样的效果,但无法获得所需的结果
BEGIN
DECLARE @Mth INT = 1;
DECLARE @Iteration INT = 1;
WHILE @Iteration != 1000000
BEGIN
WHILE @Mth <= 12
BEGIN
UPDATE TACC
SET BUSINESSDATE =
CASE
WHEN DAY([BUSINESSDATE])<13
THEN datefromparts(year([BUSINESSDATE]), @Mth, 1)
WHEN DAY([BUSINESSDATE]) BETWEEN 13 AND 24
THEN datefromparts(year([BUSINESSDATE]), @Mth, 2)
ELSE datefromparts(year([BUSINESSDATE]), @Mth, 3)
END
SET @Mth = @Mth + 1
IF @Mth=13
BEGIN
SET @Mth=1
END
END
SET @Iteration = @Iteration + 1
END
END
如果我必须为 1000 万行执行此操作,那么 T-SQL 或 DAX 哪种方法更好
【问题讨论】:
-
这和
DAX有什么关系?
标签: sql-server tsql date