查询出数据

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. HDU 6092:Rikka with Subset(dp)

    分析 很多个较小的数字可以随机组合成较大的数字,所以B数组从小到大开始遍历,除了空集,最小的那个存在的个数对应的数字必然是a数组中的数字. 每求出这一部分之后,更新后续的B序列. 分析完后,主要的难点 ...

  2. Cg(C for Graphic)语言关键字(转)

    摘抄“GPU Programming And Cg Language Primer 1rd Edition” 中文名“GPU编程与CG语言之阳春白雪下里巴人” 第三章从 GPU 运行原理和数据流程的角 ...

  3. bzoj 4472: [Jsoi2015]salesman【树形dp+贪心】

    一个点,设f[u]为要取最大值显然是前最大停留次数-1个儿子的正数f和,排个序贪心即可 判重的话就是看没选的里面是否有和选了的里面f值相同的,有的话就是一.注意在选的时候要把加进f的儿子的g合并上去 ...

  4. php 获得上周数据

    $lastMondy = date('Y-m-d', strtotime('-2 sunday +1 days', time()));$lastSundy = date('Y-m-d', strtot ...

  5. github最值得收藏的Bootstrap3后台管理框架

    1. AdminLTE AdminLTE是一个完全响应的后台管理模板.基于Bootstrap3框架.高度可定制,易于使用.适合许多屏幕分辨率从小型移动设备到大型台式机. GitHub AdminLTE ...

  6. HBuilder mui 报错No 'Access-Control-Allow-Origin' header

    Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' he ...

  7. 【模板】RMQ问题的ST表实现

    $RMQ$问题:给定一个长度为$N$的区间,$M$个询问,每次询问$[L_i,R_i]$这段区间元素的最大值/最小值. $RMQ$的高级写法一般有两种,即为线段树和$ST$表. 本文主要讲解一下$ST ...

  8. git简单使用方法

    跟远程库关联起来: http://www.cnblogs.com/Gabriel-Wei/p/6564102.html http://www.liaoxuefeng.com/wiki/00137395 ...

  9. 多个版本数据库在在一台数据库上lib 的切换问题。

    lib 的切换问题. 现象: /home/dbmon  >sqlplus / as sysdba/usr/lib/hpux64/dld.so: Unsatisfied data symbol ' ...

  10. oracle 数据导入、导出

    导入导出 --数据导出备份和导入 ------注意 导出和导入 必须是CMD 命令行下操作,而不是SQL编辑器中 --1.导出表 . --exp:导出关键字 ,userid:用户权限 ,file:保存 ...