记录使用SQL Server 最近使用遇见的坑。

SQL Server Count排序问题

问题1:A表与B表关联,Count A表某字段,结果直接使用 ORDER BY排序,直接给我报错 ORDER BY附近语法有错误。

解决思路:Count语句不支bai持where和order by,把他先整理成一个查询,再去排列筛选就好了。

解决语句:SELECT * FROM 
       (SELECT 
        COUNT(A.字段) AS AXXX,
        B.name
        FROM
       A表 AS Abiao
        LEFT JOIN B表 AS Bbiao ON Bbiao.name = Abiao.name
        GROUP BY   B.name) as AAA
        ORDER BY AXXX DESC

问题2:当我们数据量特别庞大的时候,需要取前面几位关键数据。语法稍微改动一下

解决思路:增加一个Top语法。

解决语句:SELECT 

                           top.字段

                  FROM 
                             (SELECT 
                                    COUNT(A.字段) AS AXXX,
                                   B.name
                                    FROM
                                   A表 AS Abiao
                                    LEFT JOIN B表 AS Bbiao ON Bbiao.name = Abiao.name
                                    GROUP BY   B.name) as AAA
                 ORDER BY AXXX DESC

问题3:解决SQL Server 根据当天时间查询数据

解决方案:DateDiff(dd,字段,getdate())=0

问题4:> Msg 102, Level 15, State 1, Server WIN-OTGR1H6FUIL, Procedure , Line 0
')' 附近有语法错误。
> [42000] [Microsoft][SQL Server Native Client 10.0][SQL Server]')' 附近有语法错误。 (102)

解决方案:这个问题他妈的能把我气死,正常的的SQL 为啥就报错!
说白了这就是微软搞得一个手段。只要你用了ORDER BY还要他妈的去验证是否正确。

添加这个就好了:TOP (100) PERCENT 字段,                     

SELECT * FROM 
       (SELECT 

TOP (100) PERCENT 字段,                     
        COUNT(A.字段) AS AXXX,
        B.name
        FROM
       A表 AS Abiao
        LEFT JOIN B表 AS Bbiao ON Bbiao.name = Abiao.name
        GROUP BY   B.name) as AAA
        ORDER BY AXXX DESC

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值