求一条SQL语句

yas 2012-11-13 12:50:09

create table TEST (
cate_name nvarchar(32),
date0 datetime,
v float
)

insert into test select 'A','2012-01-01 00:00:00','2.5'
insert into test select 'A','2012-02-03 00:00:00','3.2'
insert into test select 'A','2012-06-05 00:00:00','3.5'
insert into test select 'B','2012-01-01 00:00:00','3.2'
insert into test select 'B','2012-03-05 00:00:00','3.7'
insert into test select 'B','2012-08-03 00:00:00','3.8'


如何写一条语句,返回的结果是
cate_name start_time end_time v
'A' '2012-01-01 00:00:00' '2012-02-03 00:00:00' 2.5
'A' '2012-02-03 00:00:00' '2012-06-05 00:00:00' 3.2
'A' '2012-06-05 00:00:00' null 3.5
'A' '2012-01-01 00:00:00' '2012-03-05 00:00:00' 3.2
'A' '2012-03-05 00:00:00' '2012-08-03 00:00:00' 3.7
'A' '2012-08-03 00:00:00' null 3.8
...全文
130 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
asd100230520 2012-11-13
  • 打赏
  • 举报
回复
我也想知道 只能帮顶
yas 2012-11-13
  • 打赏
  • 举报
回复
写错了,结果应该是 cate_name start_time end_time v 'A' '2012-01-01 00:00:00' '2012-02-03 00:00:00' 2.5 'A' '2012-02-03 00:00:00' '2012-06-05 00:00:00' 3.2 'A' '2012-06-05 00:00:00' null 3.5 'B' '2012-01-01 00:00:00' '2012-03-05 00:00:00' 3.2 'B' '2012-03-05 00:00:00' '2012-08-03 00:00:00' 3.7 'B' '2012-08-03 00:00:00' null 3.8
yas 2012-11-13
  • 打赏
  • 举报
回复
其实自己刚发完贴就写出来了 ,一时脑子没开窍
gogodiy 2012-11-13
  • 打赏
  • 举报
回复
MSSQL2005及以上版本:

create table t1 (
    cate_name nvarchar(32),
    date0 datetime,
    v float
)
insert into t1 select 'A','2012-01-01 00:00:00','2.5'
insert into t1 select 'A','2012-02-03 00:00:00','3.2'
insert into t1 select 'A','2012-06-05 00:00:00','3.5'
insert into t1 select 'B','2012-01-01 00:00:00','3.2'
insert into t1 select 'B','2012-03-05 00:00:00','3.7'
insert into t1 select 'B','2012-08-03 00:00:00','3.8'
SELECT * FROM t1

;WITH AAA AS
(
	SELECT ROW_NUMBER() OVER(PARTITION BY cate_name ORDER BY date0) AS rowindex,* FROM t1
)
SELECT A.cate_name, A.date0 AS start_time,B.date0 AS end_time,A.v
FROM AAA AS A LEFT JOIN AAA AS B ON A.rowindex=B.rowindex-1
AND A.cate_name=B.cate_name

----------------------------
cate_name	start_time	end_time	v
A	2012-01-01 00:00:00.000	2012-02-03 00:00:00.000	2.5
A	2012-02-03 00:00:00.000	2012-06-05 00:00:00.000	3.2
A	2012-06-05 00:00:00.000	NULL	3.5
B	2012-01-01 00:00:00.000	2012-03-05 00:00:00.000	3.2
B	2012-03-05 00:00:00.000	2012-08-03 00:00:00.000	3.7
B	2012-08-03 00:00:00.000	NULL	3.8
kensouterry1 2012-11-13
  • 打赏
  • 举报
回复


;WITH c1 AS
(
	SELECT 
		ROW_NUMBER() OVER(PARTITION BY cate_name ORDER BY date0) rowid
		,cate_name
		,date0
		,v
	FROM test
)
SELECT 
	c.cate_name
	,start_time = c.date0
	,end_time = d.date0
	,c.v
FROM c1 c
LEFT JOIN c1 d ON c.rowid + 1 = d.rowid AND c.cate_name = d.cate_name --d>c

cate_name                        start_time              end_time                v
-------------------------------- ----------------------- ----------------------- ----------------------
A                                2012-01-01 00:00:00.000 2012-02-03 00:00:00.000 2.5
A                                2012-02-03 00:00:00.000 2012-06-05 00:00:00.000 3.2
A                                2012-06-05 00:00:00.000 NULL                    3.5
B                                2012-01-01 00:00:00.000 2012-03-05 00:00:00.000 3.2
B                                2012-03-05 00:00:00.000 2012-08-03 00:00:00.000 3.7
B                                2012-08-03 00:00:00.000 NULL                    3.8


内容概要:本文提出了一种基于概率调控的风光联合出力极端场景生成方法,旨在有效应对风能与太阳能发电固有的强不确定性问题。该方法融合概率统计理论与优化控制策略,通过对历史风光出力数据进行建模,采用概率分布调控技术生成具有高代表性的极端场景集,从而为电力系统在极端天气条件下的运行分析提供可靠的数据支撑。文中详细阐述了模型的构建原理、核心算法设计及完整的场景生成流程,并利用实际案例验证了所提方法在提升场景多样性和极端性方面的有效性与实用性,显著增强了电力系统在高比例可再生能源接入背景下的风险评估与决策能力。; 适合人群:具备一定电力系统基础知识和Python编程能力,从事新能源发电、电力系统规划与运行、不确定性建模、场景生成及风险评估等相关领域的研究人员和工程技术人员。; 使用场景及目标:①用于电力系统中风光出力不确定性建模与极端场景的高效模拟;②支撑含高比例可再生能源电网的可靠性评估、安全校核、调度优化与风险防控研究;③为电力系统规划、应急管理和极端事件应对提供科学依据和技术工具。; 阅读建议:建议读者结合文中提供的Python代码进行动手实践,深入理解概率调控机制与场景生成算法的实现细节,掌握参数调整对场景特性的影响规律,并可进一步将该方法拓展应用于其他不确定性电源或多能源耦合系统的场景分析中。

22,296

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧