加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

发布时间:2020-12-12 13:00:39 所属栏目:MsSql教程 来源:网络整理
导读:决定了,以后就在这记录自己在敲代码时遇到的问题和解决方案 SQLServer Group By语句的字符串拼接 SQLServer中没有类似MySQL的group_concat函数,在Group By语句中拼接字符串是非常麻烦的,常用的方法是自定义函数或是stuff((select ',' + 字段A FROM 表A WH

决定了,以后就在这记录自己在敲代码时遇到的问题和解决方案


SQLServer Group By语句的字符串拼接

SQLServer中没有类似MySQL的group_concat函数,在Group By语句中拼接字符串是非常麻烦的,常用的方法是自定义函数或是stuff((select ',' + 字段A FROM 表A  WHERE XXX for xml path('')),1,'')。 在某些时候XXX并不是简单的表A.XX=表B.XX就够了,Group By语句可能是由好几个表连接起来的,还包括一堆where条件,如果需要写好几个stuff语句,每个都要判断哪些where条件需要写进XXX,YYY,那可真是醉了。
    这个时候就可以使用CTE(Common Table Expression)了,with temp as( select...查询结果)select …… group by。相当于新建了临时表存储查询结果,那么用的时候就方便多了^_^
WITH temp AS (
        SELECT …… FROM …… INNER JOIN …… ON …… …… LEFT JOIN …… ON …… where……)//长长的查询语句,放在temp里,比自己建临时表或视图方便多了 SELECT COUNT(*) as ……,……,stuff((select DISTINCT (',' + ……) FROM temp t WHERE t.XX = temp.XX for xml path('')),1,'') as ……,(SELECT top 1 …… FROM temp t WHERE t.XX=temp.XX ORDER BY ……) as …… from temp GROUP BY ZZZZZ

今天就这样了……

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读