用SQL将多行字符串数据转换成一行数据(实例)

SELECT * FROM (
SELECT * FROM (
   SELECT o.OrderNo,
          case o.IsCustomerUrgent when 0 then N'不加急' when 1 then N'加急' END as IsCustomerUrgent 
   FROM Orders o 
   WHERE OrderDate BETWEEN '2015-11-01 00:00:00' AND '2015-11-21 23:59:59' and OrderStatus ='90'	) t1
    CROSS APPLY(	
	      SELECT PName = (
		        SELECT PName,面料,米数,工艺 
				FROM	(	
				       SELECT s.OrderNo,
					          u.Fabric 面料 ,
							  u.MaterialUnit 米数,
							  Technology 工艺, 
							  CONVERT(nvarchar(10),u.Quantity)+N'套'+u.ProductName PName
					   FROM Orders s, OrdersSuits u 
					   WHERE u.OrderID = s.OrderID AND OrderDate BETWEEN '2015-11-01 00:00:00' AND '2015-11-21 23:59:59'	
			    UNION ALL	
			           SELECT s.OrderNo,
					          p.Fabric 面料,
							  p.MaterialUnit 米数,
							  Technology 工艺,
							  CONVERT(nvarchar(10),p.Quantity)+N'套'+p.ProductName PName 
					   FROM Orders s, OrdersPants p 
					   WHERE p.OrderID = s.OrderID	AND OrderDate BETWEEN '2015-11-01 00:00:00'	AND '2015-11-21 23:59:59'
			   UNION ALL	
			           SELECT s.OrderNo,
					          v.Fabric 面料,
							  v.MaterialUnit 米数,
							  Technology 工艺,CONVERT(nvarchar(10),v.Quantity)+N'套'+v.ProductName PName
					   FROM Orders s, OrdersVest v
					   WHERE v.OrderID = s.OrderID	AND OrderDate BETWEEN '2015-11-01 00:00:00'	AND '2015-11-21 23:59:59'
		      UNION ALL	
			           SELECT s.OrderNo,
					          c.Fabric 面料,
							  c.MaterialUnit 米数,
							  Technology 工艺,
							  CONVERT(nvarchar(10),c.Quantity)+N'套'+c.ProductName PName
					   FROM Orders s, OrdersCoats c
					   WHERE c.OrderID = s.OrderID	AND OrderDate BETWEEN '2015-11-01 00:00:00'	AND '2015-11-21 23:59:59'	) t2
			  WHERE t2.OrderNo=t1.OrderNo FOR XML PATH(''), TYPE ).value('/', 'nvarchar(MAX)') )N	)t3 
	     WHERE t3.PName is not null and t3.PName <>N'' and t3.OrderNo is not null  and t3.OrderNo <>N'' 
order by t3.IsCustomerUrgent desc 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值