--> Test Data: @ta
declare @ta table ([id] int,[name] varchar(4),[mdate] datetime,[qkje] int,[jsje] int)
insert into @ta
select 1,'jack','2007-01-08',1000,560 union all
select 2,'mike','2008-01-12',600,300 union all
select 3,'tom','2008-01-15',900,450 union all
select 1,'jack','2007-02-08',600,400
--> Test Data: @tb
declare @tb table ([id] int,[name] varchar(4),[qkje] int,[jsje] int)
insert into @tb
select 1,'jack',600,260 union all
select 3,'tom',900,450--select * from @ta
--select * from @tb
--Code
select * from @ta
union all
select id,name,null,qkje,jsje from @tb
order by id,mdate--Result
/*
id          name mdate                   qkje        jsje
----------- ---- ----------------------- ----------- -----------
1           jack NULL                    600         260
1           jack 2007-01-08 00:00:00.000 1000        560
1           jack 2007-02-08 00:00:00.000 600         400
2           mike 2008-01-12 00:00:00.000 600         300
3           tom  NULL                    900         450
3           tom  2008-01-15 00:00:00.000 900         450
*/

解决方案 »

  1.   


    select id ,name,mdate,qkje,jsje
    from tba
    union all
    select id,name,null,qkje,jsje
    from tbb
    order by id结果:
    1 jack 2007-01-08 00:00:00.000 1000 560
    1 jack 2007-02-08 00:00:00.000 600 400
    1 jack NULL 600 260
    2 mike 2008-01-12 00:00:00.000 600 300
    3 tom 2008-01-15 00:00:00.000 900 450
    3 tom NULL 900 450
      

  2.   

    declare @ta table(id int,name varchar(50),mdate datetime,qkje int,jsje int)
    insert into @ta select 1,'jack','2007-01-08',1000,560
    insert into @ta select 2,'mike','2008-01-12',600,300
    insert into @ta select 3,'tom','2008-01-15',900,450
    insert into @ta select 1,'jack','2007-02-08',600,400
    declare @tb table(id int,name varchar(50),qkje int,jsje int)
    insert into @tb select 1,'jack',600,260
    insert into @tb select 3,'tom',900,450;
    with tb as
    (
    select id,name,'0' as mdate,qkje,jsje,1 as oid from @tb
    union all
    select id,name,convert(varchar(10),mdate,120) as mdate,qkje,jsje,2 as oid from @ta
    )
    select id,name,mdate,qkje,jsje from tb t 
    order by (select count(1) from tb where id=t.id) desc,oidid name mdate qkje jsje
    1 jack 0 600 260
    1 jack 2007-01-08 1000 560
    1 jack 2007-02-08 600 400
    3 tom 0 900 450
    3 tom 2008-01-15 900 450
    2 mike 2008-01-12 600 300
      

  3.   

    已经有这么多解决方案了啊.
    mdate为datetime类型,则联合时该列用NULL,如为varchar,则用'0'
      

  4.   

    服务器: 消息 156,级别 15,状态 1,行 9
    在关键字 'with' 附近有语法错误。数据库是SQL2000出现上面错误
      

  5.   

    declare @ta table(id int,name varchar(50),mdate datetime,qkje int,jsje int)
    insert into @ta select 1,'jack','2007-01-08',1000,560
    insert into @ta select 2,'mike','2008-01-12',600,300
    insert into @ta select 3,'tom','2008-01-15',900,450
    insert into @ta select 1,'jack','2007-02-08',600,400
    declare @tb table(id int,name varchar(50),qkje int,jsje int)
    insert into @tb select 1,'jack',600,260
    insert into @tb select 3,'tom',900,450;select id,name,mdate,qkje,jsje from (
    select id,name,'0' as mdate,qkje,jsje,1 as oid from @tb
    union all
    select id,name,convert(varchar(10),mdate,120) as mdate,qkje,jsje,2 as oid from @ta
    )t order by (select count(1) from @ta where id=t.id)+(select count(1) from @tb where id=t.id) desc,oidid name mdate qkje jsje
    1 jack 0 600 260
    1 jack 2007-01-08 1000 560
    1 jack 2007-02-08 600 400
    3 tom 0 900 450
    3 tom 2008-01-15 900 450
    2 mike 2008-01-12 600 300
      

  6.   

    union all 连接时候,字段类型要一样,如果是datetime的,就显示不了你要的0效果了,所以上面是'0',下面也转成var char类型啊学习!