小编sha*_*wn7的帖子

递归CTE - 合并开始和结束日期

我有下表:

row_num customer_status    effective_from_datetime
------- ------------------ -----------------------
1       Active             2011-01-01
2       Active             2011-01-02
3       Active             2011-01-03
4       Suspended          2011-01-04
5       Suspended          2011-01-05
6       Active             2011-01-06
Run Code Online (Sandbox Code Playgroud)

我正在尝试获得以下结果,即具有相同状态的连续行合并为一行,并具有有效的起始和日期范围:

customer_status effective_from_datetime effective_to_datetime
--------------- ----------------------- ---------------------
Active          2011-01-01              2011-01-04
Suspended       2011-01-04              2011-01-06
Active          2011-01-06              NULL
Run Code Online (Sandbox Code Playgroud)

我可以得到一个递归CTE,根据下一行输出正确的effective_to_datetime,但是在合并范围时遇到问题.

用于生成样本数据的代码:

CREATE TABLE #temp
(
row_num INT IDENTITY(1,1),
customer_status VARCHAR(10),
effective_from_datetime DATE
)

INSERT INTO #temp
VALUES 
('Active','2011-01-01')
,('Active','2011-01-02')
,('Active','2011-01-03')
,('Suspended','2011-01-04')
,('Suspended','2011-01-05')
,('Active','2011-01-06')
Run Code Online (Sandbox Code Playgroud)

sql t-sql sql-server

6
推荐指数
1
解决办法
1685
查看次数

甲骨文 - 获取星期几

今天是星期二.

为什么我运行这个SQL语句,它说它不是星期二?

SELECT 
CASE 
WHEN TO_CHAR(sysdate, 'Day') = 'Tuesday' THEN 'Its Tuesday'
ELSE 'Its Not Tuesday'  
END AS case_result,
TO_CHAR(sysdate, 'Day') AS day
FROM DUAL
Run Code Online (Sandbox Code Playgroud)

返回:

CASE_RESULT DAY
It's Not Tuesday    Tuesday
Run Code Online (Sandbox Code Playgroud)

sql oracle

2
推荐指数
1
解决办法
3万
查看次数

标签 统计

sql ×2

oracle ×1

sql-server ×1

t-sql ×1