数据库中table1表形式如下: 
________________________________ 
地址  日期        数值 
a    2009-2-1    1000  
b    2009-2-1    2000 
a    2009-2-2    140 
b    2009-3-1    144 
--------------------------------- 
合成新表table2的说明: 
合并地址,数据1为地址a的数据,数据2为地址b的数据 
日期相同的合一行 所求table2表形式如下 
____________________________________________ 
日期      地址a数值    地址b数值 
2009-2-1  1000          2000 
2009-2-2  140 
2009-3-1                  144 
-------------------------------------------- 用SQL语句和DATASET操作都可以 
我的想法是 
1、用SQL先取出相同日期值合并 
2、用SQL取取出不同日期值合并 
但不知怎么实现,请帮写下代码  送积分

解决方案 »

  1.   

    sql 行转列问题,到 sql 版用“行转列”查询一下,可以找到很多例子。
      

  2.   

    SELECT
      日期,
      SUM(CASE 地址 WHEN 'a' THEN 数值 ELSE 0 END) AS 地址a数值,
      SUM(CASE 地址 WHEN 'b' THEN 数值 ELSE 0 END) AS 地址b数值
    FROM table1
    GROUP BY 日期
      

  3.   

    create table #tb(addr varchar(10),dt datetime,num numeric(12))
    insert into #tb
    select 'a','2009-2-1','1000'  
    union all select 'b','2009-2-1','2000' 
    union all select 'a','2009-2-2','140' 
    union all select 'b','2009-3-1','144' select * from #tbselect convert(varchar(10),dt,120) as dt,max(case when addr='a' then num else null end) a_addr,
    max(case when addr='b' then num else null end) b_addr
    from #tb
    group by convert(varchar(10),dt,120)结果:
    ---------------------------
    2009-02-01 1000 2000
    2009-02-02 140 NULL
    2009-03-01 NULL 144
      

  4.   

    试试这个:
    Transform SUM(数值)
    SELECT 日期
    FROM table1
    GROUP BY 日期
    PIVOT 地址
      

  5.   

    典型的交叉表的sql,用case可以搞定