表1:(省份、城市、数量、id)
江苏  南京  3  1
江苏  南京  3  2
江苏  南京  3  3
表2结果与表1一样
江苏  南京  2  4
江苏  南京  2  5
结果:
江苏  南京  5  1
江苏  南京  5  2
江苏  南京  5  3
江苏  南京  5  4
江苏  南京  5  5
2个表都是临时只是里面存放的数据不同结果是一样的
各位帮忙想下.

解决方案 »

  1.   

    表1:(省份、城市、有效数量、id)
    江苏 南京 3 1
    江苏 南京 3 2
    江苏 南京 3 3
    江苏 南京 3 4
    江苏 南京 3 5
    表2结果与表1一样
    江苏 南京 2 6
    江苏 南京 2 7
    结果:
    江苏 南京 5 1
    江苏 南京 5 2
    江苏 南京 5 3
    江苏 南京 5 4
    江苏 南京 5 5
    江苏 南京 5 6
    江苏 南京 5 7
    其实核实数量和后面的id没有关系,可能题目里面给的数据会误导
    核实数据量是所有给的数据的核实有效数,后面的id列出的是所有的数据
      

  2.   

    --> 测试数据: #TA
    if object_id('tempdb.dbo.#TA') is not null drop table #TA
    GO
    create table #TA (省份 varchar(4),城市 varchar(4),数 int,id int)
    insert into #TA
    select '江苏','南京',3,1 union all
    select '江苏','南京',3,2 union all
    select '江苏','南京',3,3
    --> 测试数据: #TB
    if object_id('tempdb.dbo.#TB') is not null drop table #TB
    GO 
    create table #TB (省份 varchar(4),城市 varchar(4),数 int,id int)
    insert into #TB
    select '江苏','南京',2,4 union all
    select '江苏','南京',2,5;with cte as
    (
    select 省份,城市,id from #TA
    UNION ALL
    select 省份,城市,id from #TB
    )
    select *,n=(select count(*) from cte) from cte
    省份   城市   id          n
    ---- ---- ----------- -----------
    江苏   南京   1           5
    江苏   南京   2           5
    江苏   南京   3           5
    江苏   南京   4           5
    江苏   南京   5           5(5 行受影响)
      

  3.   

    哎,感觉写得很牵强,也不知道道理对不对,可能只有楼主知道了
    --> 测试数据: #TA
    if object_id('tempdb.dbo.#TA') is not null drop table #TA
    GO
    create table #TA (省份 varchar(4),城市 varchar(4),数 int,id int)
    insert into #TA
    select '江苏','南京',3,1 union all
    select '江苏','南京',3,2 union all
    select '江苏','南京',3,3
    --> 测试数据: #TB
    if object_id('tempdb.dbo.#TB') is not null drop table #TB
    GO 
    create table #TB (省份 varchar(4),城市 varchar(4),数 int,id int)
    insert into #TB
    select '江苏','南京',2,4 union all
    select '江苏','南京',2,5;with cte as
    (
    select 省份,城市,id from #TA
    UNION ALL
    select 省份,城市,id from #TB
    )
    select *,n=(select sum(distinct 数) from #ta) +(select sum(distinct 数) from #tb) 
    from cte
    省份   城市   id          n
    ---- ---- ----------- -----------
    江苏   南京   1           5
    江苏   南京   2           5
    江苏   南京   3           5
    江苏   南京   4           5
    江苏   南京   5           5(5 行受影响)