首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

请强人帮写个sql

2012-12-28 
请能人帮写个sql本帖最后由 kendyhj8987 于 2012-11-14 20:39:04 编辑请能人帮写个SQL语句来:(表数据如下)

请能人帮写个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值不是顺序的那种呢?
[其他解释]
引用:
引用:…
神速啊

要是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用的不?
[其他解释]
引用:
引用:引用:…
神速啊

要是COLB或COLC值不是顺序的那种呢?那就加个参考的列来定位:
 ……

学习了,楼主可以结贴了。
[其他解释]
引用:
谢谢DBA_Huangzj啊,在ACCESS2010中试了无法执行,没装MS SQL,有用能在ACCESS2010用的不?
不行.....ACCESS没有那么强大
[其他解释]
引用:
谢谢DBA_Huangzj啊,在ACCESS2010中试了无法执行,没装MS SQL,有用能在ACCESS2010用的不?

我想应该是语法不兼容吧,
但这之间的差异也不清楚
有提示哪错误吗?
[其他解释]
单纯拿去执行一定报错,access没有cte,要么搞个临时表或者中间结果集,exists不知道会不会报错
[其他解释]
谢谢热心的朋友,再等等有没其他人会的,预计10点半结贴,没解决的话换ACCESS板块再问问了。

热点排行
Bad Request.