请能人帮写个sql
本帖最后由 kendyhj8987 于 2012-11-14 20:39:04 编辑 请能人帮写个SQL语句来:(表数据如下)
ColA ColB ColC
a 1 11
b 2 22
b 3 33
a 4 44
c 5 55
写条语句,假如ColA列有相同的只取一条记录,取最上面的一条
希望执行语句后的结果应该是:
a 1 11
b 2 22
c 5 55
[最优解释]
复制错了
WITH tb ( ColA, ColB, ColC )
AS ( SELECT 'a' ,
1 ,
11
UNION ALL
SELECT 'b' ,
2 ,
22
UNION ALL
SELECT 'b' ,
3 ,
33
UNION ALL
SELECT 'a' ,
4 ,
44
UNION ALL
SELECT 'c' ,
5 ,
55
)
SELECT *
FROM TB a
WHERE EXISTS ( SELECT 1
FROM ( SELECT colA ,
MIN(colb) colb
FROM TB
GROUP BY cola
) b
WHERE a.cola = b.cola
AND a.colb = b.colb )
[其他解释]
null
[其他解释]
SELECT * FROM TB a
WHERE EXISTS (SELECT 1 FROM
(SELECT colA,MIN(colb)t.sysTime
FROM TB
GROUP BY cola)b WHERE a.cola=b.cola AND a.colb=b.colb)
[其他解释]
神速啊
要是COLB或COLC值不是顺序的那种呢?
[其他解释]
那就加个参考的列来定位:
WITH tb ( ColA, ColB, ColC )
AS ( SELECT 'a' ,
1 ,
11
UNION ALL
SELECT 'b' ,
2 ,
22
UNION ALL
SELECT 'b' ,
3 ,
33
UNION ALL
SELECT 'a' ,
4 ,
44
UNION ALL
SELECT 'c' ,
5 ,
55
),
huang AS (SELECT ROW_NUMBER() OVER (ORDER BY GETDATE())id,* FROM tb)
SELECT ColA,ColB,ColC
FROM huang a
WHERE EXISTS ( SELECT 1
FROM ( SELECT MIN(id)id,colA
FROM huang
GROUP BY cola
) b
WHERE a.cola = b.cola
AND a.id = b.id )
/*
ColA ColB ColC
---- ----------- -----------
a 1 11
b 2 22
c 5 55
(3 行受影响)
*/
[其他解释]
谢谢DBA_Huangzj啊,在ACCESS2010中试了无法执行,没装MS SQL,有用能在ACCESS2010用的不?
[其他解释]
学习了,楼主可以结贴了。
[其他解释]
不行.....ACCESS没有那么强大
[其他解释]
我想应该是语法不兼容吧,
但这之间的差异也不清楚
有提示哪错误吗?
[其他解释]
单纯拿去执行一定报错,access没有cte,要么搞个临时表或者中间结果集,exists不知道会不会报错
[其他解释]
谢谢热心的朋友,再等等有没其他人会的,预计10点半结贴,没解决的话换ACCESS板块再问问了。