求助 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。
...全文
112 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
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 来区分吧

22,209

社区成员

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

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