查询出数据

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. FTP相关内容

    FTP相关介绍 FTP 1)File Transfer Protocol ( FTP ) 是相当古老的网络协议之一,他最主要的功能就是进行 Server端与 Client 端之间的档案传送的功能.这个 ...

  2. E20180420-hm

    prior adj. 优先的; 占先的; 在…之前 alignment n. 结盟; 队列,排成直线; 校直,调整; [工] 准线; align  vt. 使成一线,使结盟; 排整齐    vi. 排 ...

  3. 51nod 1247 可能的路径(gcd)

    传送门 题意 略 分析 有以下结论 \(1.(x,y)->(y,x)\) \(2.(x,y)->(a,b)==>(a,b)->(x,y)\) 证明 做如下变换 \((a,b)- ...

  4. 51nod 1428【贪心】

    思路: 就是先排序,然后对每个取最小的结束时间. #include <bits/stdc++.h> using namespace std; typedef long long LL; c ...

  5. POJ 1384【完全背包】

    题意: 已知储蓄罐满时的质量f以及空时质量e, 有n种硬币,每种硬币的价值为p,质量为w, 求该储蓄罐中的最少有多少钱? 思路: 完全背包思想,问题是在一个重量下的最小价值 那么只要变一下符号就好了? ...

  6. linux 问题二 查看系统是32位还是64位

    方法: 1.uname -a 2.uname -m 3.file /sbin/init 4.arch 5.Settings -> Details 说明: 1. i386 适用于intel和AMD ...

  7. 鸟哥私房菜基础篇:Linux是什么习题

    猫宁!!! 参考链接:http://cn.linux.vbird.org/linux_basic/0110whatislinux.php#ex 鸟哥是为中国信息技术发展做出巨大贡献的人. 1-你在你的 ...

  8. RobotFramework自动化测试框架(2)- RobotFramework语法

    RobotFramework测试用例是由四部分组成的,下面就从这四个部分简单介绍语法: 关键字表 *** Keywords *** 设置表 *** Settings *** 变量表 *** Varia ...

  9. the little schemer 笔记(7)

    第七章 Friends and Relations 这是一个set集合吗 (apple peaches apple plum) 不是,apple出现了不止一次 (set? lat) 是真还是假,其中l ...

  10. SPRING-BOOT系列之SpringBoot的诞生及其和微服务的关系

    转载自 : https://www.cnblogs.com/ityouknow/p/9034377.html 微服务架构 微服务的诞生并非偶然,它是在互联网高速发展,技术日新月异的变化以及传统架构无法 ...