数据类型样式:
CREATE TABLE #t (id INT,col1 varchar(10),col2 varchar(10))
go
INSERT INTO #t VALUES(1, 'a1', 'a')
INSERT INTO #t VALUES(2, 'a1','b')
INSERT INTO #t VALUES(3, 'a2', 'a')
INSERT INTO #t VALUES(4, 'a2', 'b')
INSERT INTO #t VALUES(5, 'a3', 'c')
INSERT INTO #t VALUES(6, 'a3', 'd')
INSERT INTO #t VALUES(7, 'a3', 'e')
INSERT INTO #t VALUES(8, 'a4', 'f')
INSERT INTO #t VALUES(9, 'a5', 'f')
INSERT INTO #t VALUES(10, 'a6', 'g')
想得到的结果:
1 a1 a
4 a2 b
5 a3 c
8 a4 f
10 a6 g
用SQL语句查询可以实现吗?意思就是最终查询到的数据列1里没用重复项 列2里也没有,不一定要和我上面结果一样,只要不重复就行。
------解决方案--------------------
select id, col1, col2
from (select id,
col1,
count(1) over(partition by col1 order by id) as cn1,
col2,
count(1) over(partition by col2 order by id) as cn2
from #t)
where cn1 = 1
and cn2 = 1