table : -----------------------
列1 列2 列3
-----------------------
bb cc 20
-----------------------
cc bb 20
-----------------------
ff hh 9
-----------------------
hh ff 9
----------------------- 想要得到的结果:
-----------------------
列1 列2 列3
-----------------------
bb cc 20
-----------------------
ff hh 9
----------------------- cc bb ,hh ff 作为重复数据去除。如何写 sql 语句?
如果可以,请分别写出SQL SERVER和Oracle语句如何写(ORACLE好像可以直接用一条语句实现)
列1 列2 列3
-----------------------
bb cc 20
-----------------------
cc bb 20
-----------------------
ff hh 9
-----------------------
hh ff 9
----------------------- 想要得到的结果:
-----------------------
列1 列2 列3
-----------------------
bb cc 20
-----------------------
ff hh 9
----------------------- cc bb ,hh ff 作为重复数据去除。如何写 sql 语句?
如果可以,请分别写出SQL SERVER和Oracle语句如何写(ORACLE好像可以直接用一条语句实现)
-- Author: liangCK 小梁
-- Date : 2008-11-24 17:03:59
---------------------------------
--> 生成测试数据: @T
DECLARE @T TABLE (列1 VARCHAR(2),列2 VARCHAR(2),列3 INT)
INSERT INTO @T
SELECT 'bb','cc',20 UNION ALL
SELECT 'cc','bb',20 UNION ALL
SELECT 'ff','hh',9 UNION ALL
SELECT 'hh','ff',9--SQL查询如下:SELECT DISTINCT *
FROM(
SELECT
CASE WHEN 列1>列2 THEN 列1 ELSE 列2 END AS 列1,
CASE WHEN 列1>列2 THEN 列2 ELSE 列1 END AS 列2,
列3
FROM @T
) AS T/*
列1 列2 列3
---- ---- -----------
cc bb 20
hh ff 9(2 行受影响)
*/
-- Author: liangCK 小梁
-- Date : 2008-11-24 17:03:59
---------------------------------
--> 生成测试数据: @T
DECLARE @T TABLE (列1 VARCHAR(2),列2 VARCHAR(2),列3 INT)
INSERT INTO @T
SELECT 'bb','cc',20 UNION ALL
SELECT 'cc','bb',20 UNION ALL
SELECT 'ff','hh',9 UNION ALL
SELECT 'hh','ff',9--SQL查询如下:SELECT DISTINCT *
FROM(
SELECT
CASE WHEN 列1<列2 THEN 列1 ELSE 列2 END AS 列1,
CASE WHEN 列1<列2 THEN 列2 ELSE 列1 END AS 列2,
列3
FROM @T
) AS T/*
列1 列2 列3
---- ---- -----------
bb cc 20
ff hh 9(2 行受影响)
*/
select case when 列1<列2 then 列1 else 列2 end as 列1,
case when 列1<列2 then 列2 else 列1 end as 列2,
列3
from [table] ) as a
select * from table group by 列3
from @t a
where 列2 > 列1