查询出数据

SELECT    a.ID AS KYMain_ID ,
',' + a.Leader + ',' AS KYMain_Leader ,
STUFF(( SELECT ',' + CONVERT(VARCHAR(36), b.TaskLeader)
FROM TB_KYChildProject b
WHERE b.MainProjectID = a.ID
AND ISNULL(b.IsDelete, 0) = 0
FOR
XML PATH('')
), 1, 0, '') + ',' AS KYChild_Leader ,
STUFF(( SELECT ',' + CONVERT(VARCHAR(36), b.Single_Leader)
FROM TB_KYSubProject b
WHERE b.MainProjectID = a.ID
AND ISNULL(b.IsDelete, 0) = 0
FOR
XML PATH('')
), 1, 0, '') + ',' AS KYSub_Leader ,
STUFF(( SELECT ',' + CONVERT(VARCHAR(36), b.KY_KCUser)
FROM TB_KYSubTask b
WHERE b.MainProjectID = a.ID
AND ISNULL(b.IsDelete, 0) = 0
FOR
XML PATH('')
), 1, 0, '') + ',' AS KYTask_Leader ,
',' + b.Leader + ',' AS SJMain_Leader ,
STUFF(( SELECT ',' + CONVERT(VARCHAR(36), b.TaskLeader)
FROM TB_SJChildProject b
WHERE b.MainProjectID = a.ID
AND ISNULL(b.IsDelete, 0) = 0
FOR
XML PATH('')
), 1, 0, '') + ',' AS SJChild_Leader ,
STUFF(( SELECT ',' + CONVERT(VARCHAR(36), b.SJ_User)
FROM TB_SJSubProject b
WHERE b.MainProjectID = a.ID
AND ISNULL(b.IsDelete, 0) = 0
FOR
XML PATH('')
), 1, 0, '') + ',' AS SJSub_Leader ,
STUFF(( SELECT ',' + CONVERT(VARCHAR(36), b.SJ_KCUser)
FROM TB_SJSubTask b
WHERE b.MainProjectID = a.ID
AND ISNULL(b.IsDelete, 0) = 0
FOR
XML PATH('')
), 1, 0, '') + ',' AS SJTask_Leader ,
',' + c.Leader + ',' AS SGMain_Leader ,
STUFF(( SELECT ',' + CONVERT(VARCHAR(36), b.TaskLeader)
FROM TB_SGChildProject b
WHERE b.MainProjectID = a.ID
AND ISNULL(b.IsDelete, 0) = 0
FOR
XML PATH('')
), 1, 0, '') + ',' AS SGChild_Leader ,
STUFF(( SELECT ',' + CONVERT(VARCHAR(36), b.SG_U_User)
FROM TB_SGSubTask b
WHERE b.MainProjectID = a.ID
AND ISNULL(b.IsDelete, 0) = 0
FOR
XML PATH('')
), 1, 0, '') + ',' AS SGTask_Leader ,
STUFF(( SELECT ',' + CONVERT(VARCHAR(36), b.SG_KCUser)
FROM TB_SGSubTask b
WHERE b.MainProjectID = a.ID
AND ISNULL(b.IsDelete, 0) = 0
FOR
XML PATH('')
), 1, 0, '') + ',' AS SGTask_KCLeader
FROM TB_KYMainProject a
LEFT JOIN TB_SJMainProject b ON b.ID = a.ID
LEFT JOIN TB_SGMainProject c ON c.ID = a.ID
WHERE ISNULL(a.IsDelete, 0) = 0
AND ISNULL(b.IsDelete, 0) = 0
AND ISNULL(c.IsDelete, 0) = 0

然后业务需要,把多列拼接成一列,但显示NULL

SELECT  [KYMain_Leader] + [KYChild_Leader] + [KYSub_Leader] + [KYTask_Leader]+ [SJMain_Leader] + [SJChild_Leader] + [SJSub_Leader]+ [SJTask_Leader] + [SGMain_Leader] + [SGChild_Leader]+ [SGTask_Leader] + [SGTask_KCLeader]
FROM ( SELECT a.ID AS KYMain_ID ,
',' + a.Leader + ',' AS KYMain_Leader ,
STUFF(( SELECT ',' + CONVERT(VARCHAR(36), b.TaskLeader)
FROM TB_KYChildProject b
WHERE b.MainProjectID = a.ID
AND ISNULL(b.IsDelete, 0) = 0
FOR
XML PATH('')
), 1, 0, '') + ',' AS KYChild_Leader ,
STUFF(( SELECT ',' + CONVERT(VARCHAR(36), b.Single_Leader)
FROM TB_KYSubProject b
WHERE b.MainProjectID = a.ID
AND ISNULL(b.IsDelete, 0) = 0
FOR
XML PATH('')
), 1, 0, '') + ',' AS KYSub_Leader ,
STUFF(( SELECT ',' + CONVERT(VARCHAR(36), b.KY_KCUser)
FROM TB_KYSubTask b
WHERE b.MainProjectID = a.ID
AND ISNULL(b.IsDelete, 0) = 0
FOR
XML PATH('')
), 1, 0, '') + ',' AS KYTask_Leader ,
',' + b.Leader + ',' AS SJMain_Leader ,
STUFF(( SELECT ',' + CONVERT(VARCHAR(36), b.TaskLeader)
FROM TB_SJChildProject b
WHERE b.MainProjectID = a.ID
AND ISNULL(b.IsDelete, 0) = 0
FOR
XML PATH('')
), 1, 0, '') + ',' AS SJChild_Leader ,
STUFF(( SELECT ',' + CONVERT(VARCHAR(36), b.SJ_User)
FROM TB_SJSubProject b
WHERE b.MainProjectID = a.ID
AND ISNULL(b.IsDelete, 0) = 0
FOR
XML PATH('')
), 1, 0, '') + ',' AS SJSub_Leader ,
STUFF(( SELECT ',' + CONVERT(VARCHAR(36), b.SJ_KCUser)
FROM TB_SJSubTask b
WHERE b.MainProjectID = a.ID
AND ISNULL(b.IsDelete, 0) = 0
FOR
XML PATH('')
), 1, 0, '') + ',' AS SJTask_Leader ,
',' + c.Leader + ',' AS SGMain_Leader ,
STUFF(( SELECT ',' + CONVERT(VARCHAR(36), b.TaskLeader)
FROM TB_SGChildProject b
WHERE b.MainProjectID = a.ID
AND ISNULL(b.IsDelete, 0) = 0
FOR
XML PATH('')
), 1, 0, '') + ',' AS SGChild_Leader ,
STUFF(( SELECT ',' + CONVERT(VARCHAR(36), b.SG_U_User)
FROM TB_SGSubTask b
WHERE b.MainProjectID = a.ID
AND ISNULL(b.IsDelete, 0) = 0
FOR
XML PATH('')
), 1, 0, '') + ',' AS SGTask_Leader ,
STUFF(( SELECT ',' + CONVERT(VARCHAR(36), b.SG_KCUser)
FROM TB_SGSubTask b
WHERE b.MainProjectID = a.ID
AND ISNULL(b.IsDelete, 0) = 0
FOR
XML PATH('')
), 1, 0, '') + ',' AS SGTask_KCLeader
FROM TB_KYMainProject a
LEFT JOIN TB_SJMainProject b ON b.ID = a.ID
LEFT JOIN TB_SGMainProject c ON c.ID = a.ID
WHERE ISNULL(a.IsDelete, 0) = 0
AND ISNULL(b.IsDelete, 0) = 0
AND ISNULL(c.IsDelete, 0) = 0
) vv

解决方法:

null加减乘除任何值都等于null,所以使用isnull函数先处理下列的值再拼接

SELECT  ISNULL([KYMain_Leader], '') + ISNULL([KYChild_Leader], '')
+ ISNULL([KYSub_Leader], '') + ISNULL([KYTask_Leader], '')
+ ISNULL([SJMain_Leader], '') + ISNULL([SJChild_Leader], '')
+ ISNULL([SJSub_Leader], '') + ISNULL([SJTask_Leader], '')
+ ISNULL([SGMain_Leader], '') + ISNULL([SGChild_Leader], '')
+ ISNULL([SGTask_Leader], '') + ISNULL([SGTask_KCLeader], '')
FROM ( SELECT a.ID AS KYMain_ID ,
',' + a.Leader + ',' AS KYMain_Leader ,
STUFF(( SELECT ',' + CONVERT(VARCHAR(36), b.TaskLeader)
FROM TB_KYChildProject b
WHERE b.MainProjectID = a.ID
AND ISNULL(b.IsDelete, 0) = 0
FOR
XML PATH('')
), 1, 0, '') + ',' AS KYChild_Leader ,
STUFF(( SELECT ',' + CONVERT(VARCHAR(36), b.Single_Leader)
FROM TB_KYSubProject b
WHERE b.MainProjectID = a.ID
AND ISNULL(b.IsDelete, 0) = 0
FOR
XML PATH('')
), 1, 0, '') + ',' AS KYSub_Leader ,
STUFF(( SELECT ',' + CONVERT(VARCHAR(36), b.KY_KCUser)
FROM TB_KYSubTask b
WHERE b.MainProjectID = a.ID
AND ISNULL(b.IsDelete, 0) = 0
FOR
XML PATH('')
), 1, 0, '') + ',' AS KYTask_Leader ,
',' + b.Leader + ',' AS SJMain_Leader ,
STUFF(( SELECT ',' + CONVERT(VARCHAR(36), b.TaskLeader)
FROM TB_SJChildProject b
WHERE b.MainProjectID = a.ID
AND ISNULL(b.IsDelete, 0) = 0
FOR
XML PATH('')
), 1, 0, '') + ',' AS SJChild_Leader ,
STUFF(( SELECT ',' + CONVERT(VARCHAR(36), b.SJ_User)
FROM TB_SJSubProject b
WHERE b.MainProjectID = a.ID
AND ISNULL(b.IsDelete, 0) = 0
FOR
XML PATH('')
), 1, 0, '') + ',' AS SJSub_Leader ,
STUFF(( SELECT ',' + CONVERT(VARCHAR(36), b.SJ_KCUser)
FROM TB_SJSubTask b
WHERE b.MainProjectID = a.ID
AND ISNULL(b.IsDelete, 0) = 0
FOR
XML PATH('')
), 1, 0, '') + ',' AS SJTask_Leader ,
',' + c.Leader + ',' AS SGMain_Leader ,
STUFF(( SELECT ',' + CONVERT(VARCHAR(36), b.TaskLeader)
FROM TB_SGChildProject b
WHERE b.MainProjectID = a.ID
AND ISNULL(b.IsDelete, 0) = 0
FOR
XML PATH('')
), 1, 0, '') + ',' AS SGChild_Leader ,
STUFF(( SELECT ',' + CONVERT(VARCHAR(36), b.SG_U_User)
FROM TB_SGSubTask b
WHERE b.MainProjectID = a.ID
AND ISNULL(b.IsDelete, 0) = 0
FOR
XML PATH('')
), 1, 0, '') + ',' AS SGTask_Leader ,
STUFF(( SELECT ',' + CONVERT(VARCHAR(36), b.SG_KCUser)
FROM TB_SGSubTask b
WHERE b.MainProjectID = a.ID
AND ISNULL(b.IsDelete, 0) = 0
FOR
XML PATH('')
), 1, 0, '') + ',' AS SGTask_KCLeader
FROM TB_KYMainProject a
LEFT JOIN TB_SJMainProject b ON b.ID = a.ID
LEFT JOIN TB_SGMainProject c ON c.ID = a.ID
WHERE ISNULL(a.IsDelete, 0) = 0
AND ISNULL(b.IsDelete, 0) = 0
AND ISNULL(c.IsDelete, 0) = 0
) vv

SQL Sever中多列拼接成一列值为NULL的更多相关文章

  1. Expression构建DataTable to Entity 映射委托 sqlserver 数据库里面金额类型为什么不建议用float,实例告诉你为什么不能。 sql server 多行数据合并成一列 C# 字符串大写转小写,小写转大写,数字保留,其他除外 从0开始用U盘制作启动盘装Windows10系统(联想R720笔记本)并永久激活方法 纯CSS打造淘宝导航菜单栏 C# Winform

    Expression构建DataTable to Entity 映射委托   1 namespace Echofool.Utility.Common { 2 using System; 3 using ...

  2. 【SQL Sever】将SQL Sever中的一个数据表的数据导出为insert语句

    例如:这SQL   Sever中的一张数据表,想要将这张数据表中的数据  转化成一个一个的insert语句存储在txt的文档中,那么不论走到那里这个insert语句一执行,我们就能将这个数据表中的数据 ...

  3. SQL SERVER Date列和Time列合并成一列处理报表数据

    问题原由: intouch项目中,利用intouch脚本来存储数据时,存入的时间格式为:date,time分开存储.在报表需求中,有需要利用查询两个时间段之间的数据. 问题解决: 1.直接写脚本(写出 ...

  4. SQL——将两列合并成一列

    将两列合并连接成一列,需要注意的是列的格式必须是NVARCHAR或者VARCHAR类型 ), call_uuid, ) +','+agent_code '   PerDate 1 ,980408102 ...

  5. Mybatis中sql语句中的in查询,一定要判断null的情况

    不严谨的写法,可能会报错:in (),这种情况不符合mysql的语法. select from loanwhere LOAN_ID in <foreach item="item&quo ...

  6. SQL STUFF函数 拼接字符串 多列 合并成一列 转

    关于和并列的 要这种效果. create table tb(idint, value varchar(10)) insert into tbvalues(1,'aa') insert into tbv ...

  7. 在SQL数据库中怎么去掉某一列的中的一写特殊字符

    用REPLACE函数,把空格替换成 ''. 例:去除 表table 中 col 列的空字符去除空格符:update table set col = REPLACE(col,' ','') 还有tab制 ...

  8. SQL Server中使用PIVOT行转列

    使用PIVOT行转列 1.建表及插入数据 USE [AdventureDB] GO /****** Object: Table [dbo].[Score] Script Date: 11/25/201 ...

  9. 在Sql Server中使用Guid类型的列及设置Guid类型的默认值

    1.列的类型为uniqueidentifier 2.列的默认值可以设为newid()

随机推荐

  1. Android App组件之ListFragment -- 说明和示例(转载)

    转自:http://www.cnblogs.com/skywang12345/p/3160260.html 1 ListFragement介绍 ListFragment继承于Fragment.因此它具 ...

  2. c语言基本数据类型相关

    1byte = 8bit  数据类型  比特长度  位长度  IO表达  int  2/4  16/32  %d   unsigned (int)  2/4  16/32  %u  short int ...

  3. Codeforces - 1033C - Permutation Game - 简单dp - 简单数论

    https://codeforces.com/problemset/problem/1033/C 一开始觉得自己的答案会TLE,但是吸取徐州赛区的经验去莽了一发. 其实因为下面这个公式是 $O(nlo ...

  4. Codeforces - 773A - Success Rate - 二分 - 简单数论

    https://codeforces.com/problemset/problem/773/A 一开始二分枚举d,使得(x+d)/(y+d)>=p/q&&x/(y+d)<= ...

  5. hdoj5115【区间DP·基础】

    题意: 有n头wolf排成一排,杀一头wolf回受到受到的伤害=它的本身a[i]+相邻两个b[i-1]+b[i+1].然后杀死第k个位置的wolf的话,k-1和k+1默认相邻(满足的话). 思路: 用 ...

  6. python __builtins__ memoryview类 (46)

    46.'memoryview',  返回给定参数的内存查看对象(Momory view).所谓内存查看对象,是指对支持缓冲区协议的数据进行包装,在不需要复制对象基础上允许Python代码访问. cla ...

  7. python __builtins__ enumerate类 (21)

    21.'enumerate', 用于将一个可遍历的数据对象(如列表.元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中. class enumerate(object ...

  8. Swoole和Workerman到底选谁?

    Swoole:面向生产环境的 PHP 异步网络通信引擎 使 PHP 开发人员可以编写高性能的异步并发 TCP.UDP.Unix Socket.HTTP,WebSocket 服务.Swoole 可以广泛 ...

  9. iSCSI 原理和基础使用

    终于完成最后一篇了,一上午的时间就过去了. 下文主要是对基本操作和我对iSCSI的理解,网上有很多iSCSI原理,在这里我就不写了,请自行学习. 这篇文章仅对iSCSI的很多误解做一次梳理,你必须对所 ...

  10. ufunc函数

    无灯可看.雨水从教正月半.探茧推盘.探得千秋字字看. 铜驼故老.说著宣和似天宝.五百年前.曾向杭州看上元. ufunc是universal function的缩写,他是一种对数组的每个元素进行运算的函 ...