日期:2014-05-16  浏览次数:20492 次

拼接SQL ???
表T1,T2,现想把T1、T2表拼接,拼接格式如T3,T1、T2单号 组号相同,形成的T3表条件为:单号组号相同的放在一块,如何在T2表中有单号与组号相同的记录,则将其拼接在其后,之后再拼接下一个组号,有则拼接,没有不拼接,拼接要按单号组号排序,求SQL?

T1表
单号 组号 产品 产地
001    1       香蕉 广东
001    1       苹果 辽宁
001    2       葡萄 台湾
001    1       西瓜 太原
001    2       柿子 辽宁

T2 表
单号 组号 备注
001   1        空运
001   2        陆运

T3
单号 组号 产品 产地
001    1       香蕉 广东
001    1       苹果 辽宁
001    1       西瓜 太原
001    1       空运
001    2       葡萄 台湾
001    2       柿子 辽宁
001    2       陆运



------解决方案--------------------

select a.* from T1 a
union all
select b.* from T2 b
order by 单号,组号

------解决方案--------------------
IF EXISTS( SELECT NAME FROM sys.objects AS o WHERE NAME = 't1')
DROP TABLE t1
GO
CREATE TABLE t1(orderno VARCHAR(3) , groupno VARCHAR(1) , product NVARCHAR(5) , place NVARCHAR(5))
GO
INSERT INTO t1(orderno , groupno , product , place)
SELECT '001' , '1' , N'香蕉' , N'广东' union all
SELECT '001' , '1' , N'苹果' , N'辽宁' union all
SELECT '001' , '2' , N'葡萄' , N'台湾' union all
SELECT '001' , '1' , N'西瓜' , N'太原' union all
SELECT '001' , '2' , N'柿子' , N'辽宁' 
IF EXISTS(SELECT NAME FROM sys.objects AS o WHERE o.name = 't2')
DROP TABLE t2
GO
CREATE TABLE t2(orderno VARCHAR(3),groupno VARCHAR(1) , remark NVARCHAR(4))
GO
INSERT INTO t2(orderno , groupno , remark)
SELECT '001' , '1' , N'空运' union all
SELECT '001' , '2' , N'陆运'
GO
--执行查询
SELECT orderno , groupno , product , place , 1 AS t FROM t1 
UNION ALL
SELECT orderno , groupno , remark AS product, '' AS place , 2 AS t FROM t2 
ORDER BY orderno , groupno , t

/*执行结果
 orderno groupno product place t
------- ------- ------- ----- -----------
001     1       香蕉      广东    1
001     1