求助 SQL 数据分组

baidu_30718399 2015-08-19 07:48:08
如果A=8,B=C,D=E,E=F。如何实现A=1,B=1,C=1,D=2,E=2,F=2。就是把ABC分为一组,DEF分为一组,而且生成group ID。 当选择1的时候,会出现A,B,C。当然选择A的时候显示的1。
...全文
87 点赞 收藏 2
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Tiger_Zhao 2015-08-20
WITH /* 测试数据
table1(Col1,Col2) AS (
SELECT 'A',9 UNION ALL
SELECT 'B',9 UNION ALL
SELECT 'C',9 UNION ALL
SELECT 'D',3 UNION ALL
SELECT 'E',3 UNION ALL
SELECT 'F',3
), */
t1 AS (
SELECT *,
ROW_NUMBER() OVER(ORDER BY GETDATE()) rn
FROM table1
)
,t2 AS (
SELECT Col2,
ROW_NUMBER() OVER(ORDER BY MIN(rn)) groupID
FROM t1
GROUP BY Col2
)
--SELECT * FROM t2
SELECT t.Col1,
t2.GroupID
FROM t2
JOIN table1 t
ON t2.Col2 = t.Col2
WHERE t2.groupID = 1 -- 也可以用 t.Col1 = 'A' 条件去取 GroupID

Col1              GroupID
---- --------------------
A 1
B 1
C 1

中间结果t2
       Col2              groupID
----------- --------------------
9 1
3 2

回复
xiaoxiangqing 2015-08-20
用case when 来区分吧
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2015-08-19 07:48
社区公告
暂无公告