关于sqlserver 数据表查询的问题

咖啡博士 2010-02-03 03:07:09
源数据表格式如下

目标数据集格式如下


请高手帮忙解决
最好是简单查询语句搞定的,不想使用游标等复杂操作
...全文
50 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
咖啡博士 2010-02-03
  • 打赏
  • 举报
回复
非常感谢5楼高人,我要的正是这个效果
chuifengde 2010-02-03
  • 打赏
  • 举报
回复
DECLARE @a table(a decimal(10,1),b decimal(10,1),c int )
INSERT @a SELECT 100 ,0.4,null
UNION ALL SELECT 100.5,0.4,null
UNION ALL SELECT 101,0.4,null
UNION ALL SELECT 101.5,0.8,null
UNION ALL SELECT 102,0.8,null
UNION ALL SELECT 102.5,0,NULL
UNION ALL SELECT 103,0.8,null
UNION ALL SELECT 103.5,0.8,null
UNION ALL SELECT 104,0.8,null
UNION ALL SELECT 104.5,0.8,null
UNION ALL SELECT 105,0.8,null
UNION ALL SELECT 105.5,0.8,null
UNION ALL SELECT 106,0.8,null
UNION ALL SELECT 106.5,0.8,null
UNION ALL SELECT 107,0.4,null
UNION ALL SELECT 107.5,0.8,null
UNION ALL SELECT 108,0.8,null
UNION ALL SELECT 108.5,0.8,null
UNION ALL SELECT 109,0.8,null
UNION ALL SELECT 109.5,0.8,null
UNION ALL SELECT 110,0.8,null
UNION ALL SELECT 110.5,0,null
UNION ALL SELECT 111,0,NULL
UNION ALL SELECT 111.5,0.4,null
UNION ALL SELECT 112,0.8,null
UNION ALL SELECT 112.5,0.8,null
UNION ALL SELECT 113,0.4,null
UNION ALL SELECT 113.5,0.8,null
UNION ALL SELECT 114,0.8,null

DECLARE @i int,@t decimal(10,1)
SELECT @i=0,@t=0
UPDATE @a SET c=@i,@i=CASE WHEN b<> @t THEN @i+1 ELSE @i END,@t=b

SELECT dept1=min(a),dept2=max(a),b FROM @a
GROUP BY c,b
ORDER BY 1
--result
/*dept1 dept2 b
------------ ------------ ------------
100.0 101.0 .4
101.5 102.0 .8
102.5 102.5 .0
103.0 106.5 .8
107.0 107.0 .4
107.5 110.0 .8
110.5 111.0 .0
111.5 111.5 .4
112.0 112.5 .8
113.0 113.0 .4
113.5 114.0 .8

(所影响的行数为 11 行)

*/
咖啡博士 2010-02-03
  • 打赏
  • 举报
回复
我的目的就是将BI进行聚合,但使用group by的话就会只得到三行数据 ,BI分别是0,0.4,0.8
而且得不到对应的DEPT1和DEPT2,
所以在这里请求高手帮忙
咖啡博士 2010-02-03
  • 打赏
  • 举报
回复
继续向下即得到101.5,102,0.8表示在源表中从101.5到102的DEPT对应的BI为0.8
咖啡博士 2010-02-03
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fredrickhu 的回复:]
看不懂
[/Quote]

源数据是DEPT和BI的一对一的数据行 其中 DEPT是主键字段
目标想要获得以区间形式表示的数据行,比如在源表中100<=DEPT<=101的行对应的BI都是0.4
即得到目标数据集中的第一行 100,101,0.4
目标数据集中的DEPT1为主键
--小F-- 2010-02-03
  • 打赏
  • 举报
回复
看不懂

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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