序
发布时间: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
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |