value1      value2    ID
               100
    450        175       5
               175
  --------------------------
               220
               160
    800        170       6
               150
               100
  --------------------------    ……        ……       ……value1那列的值等于对应的value2那列的和
我想问怎么通过一条查询语句得出value1那列的值PS:很着急,解决马上就结了
                              

解决方案 »

  1.   

    这问题怎么往这里发?
    问题描述得不清楚, value2的数据怎么那样子的
      

  2.   

    450 和800是value1的数据,100,175,175……是value2的数据,这是网页显示问题,2楼你还真业余
      

  3.   

    select value1 from 表 group by ID,value1 having sum(value2)=value1
      

  4.   

    查询的条件是什么?(哪些是已知条件?)
    另外,是不是每条记录都有id?
    不然怎么确定哪几条记录对应的合计在value1里?
      

  5.   

    分组求和 ,oracle使用相应语法就可以了,
    或许不用更改declare @cc table(value2 int ,ID int)
    insert into @cc select 100,5
    insert into @cc select 175,5
    insert into @cc select 175,5
    insert into @cc select 220,6
    insert into @cc select 160,6
    insert into @cc select 170,6
    insert into @cc select 150,6
    insert into @cc select 100,6
    --分组求和
    select sum(value2),ID from @cc group by ID
      

  6.   


    declare @cc table(value2 int ,ID int)
    insert into @cc select 100,5
    insert into @cc select 175,5
    insert into @cc select 175,5
    insert into @cc select 220,6
    insert into @cc select 160,6
    insert into @cc select 170,6
    insert into @cc select 150,6
    insert into @cc select 100,6
    --分组求和
    select sum(value2) as  value1,ID from @cc group by ID
    /*result
    value1      ID
    ----------- -----------
    450         5
    800         6
      

  7.   

    select sum(value2),ID from tbName group by ID
      

  8.   

      value1      value2    ID 
                    100 
         450        175       5 
                    175 
       -------------------------- 
                    220 
                    160 
         800        170       6 
                    150 
                    100 
       -------------------------- 如果你第一行,第三行ID是空的,怎么分组?[align=center]====  ====
    [/align]
      

  9.   

    value1      value2    ID 
                   100 
        450        175       5 
                   175 
      -------------------------- 
                   220 
                   160 
        800        170       6 
                   150 
                   100 
    -----------------------------------select sum(value2) value1 , ID group by id
      

  10.   

    很感谢大家,不过我想说,如果是简单的分组求和的话,我就不用上来问了
    value1      value2    ID 
                    100 
         450        175       5 
                    175 
       -------------------------- 
                    220 
                    160 
         800        170       6 
                    150 
                    100 
       -------------------------- 
    这个是我想在查询后显示的效果,而value1的值是算出来的,数据库中查不到
      

  11.   


    表结构还用说吗?看一眼就知道了,字段:value1,value2,ID,都是nvarchar型的
      

  12.   

    我只是想尽快解决问题,或者显示成这样吧    value1      value2    ID   
         450        100       5
         450        175       5   
         450        175       5
       --------------------------   
         800        220       6
         800        160       6
         800        170       6   
         800        150       6
         800        100       6
       -------------------------- 这样比较清楚了?
      

  13.   

    清楚declare @cc table(value2 int ,ID int)
    insert into @cc select 100,5
    insert into @cc select 175,5
    insert into @cc select 175,5
    insert into @cc select 220,6
    insert into @cc select 160,6
    insert into @cc select 170,6
    insert into @cc select 150,6
    insert into @cc select 100,6
    --分组求和
    select b.value1,a.* from @cc a left join 
    (select sum(value2) as  value1,ID from @cc group by ID) b
    on a.ID = b.ID
    /*
    value1      value2      ID
    ----------- ----------- -----------
    450         100         5
    450         175         5
    450         175         5
    800         220         6
    800         160         6
    800         170         6
    800         150         6
    800         100         6
      

  14.   

    05的方法
    declare @cc table(value2 int ,ID int)
    insert into @cc select 100,5
    insert into @cc select 175,5
    insert into @cc select 175,5
    insert into @cc select 220,6
    insert into @cc select 160,6
    insert into @cc select 170,6
    insert into @cc select 150,6
    insert into @cc select 100,6
    --
    select value1=(case when Num=1 then ltrim(d.value1) else '' end),c.value2,c.ID from (select value2,ID,Num=(select count(1) from 
                (select value2,ID,row_number() over(order by ID) as Num from @cc) a
                 where a.ID=b.ID and a.Num<=b.Num)
    from (select value2,ID,row_number() over(order by ID) as Num from @cc) b) c left join (select sum(value2) as  value1,ID from @cc group by ID) d
    on c.ID = d.ID/*
    value1       value2      ID
    ------------ ----------- -----------
    450          100         5
                 175         5
                 175         5
    800          220         6
                 160         6
                 170         6
                 150         6
                 100         6
      

  15.   


    declare @cc table(value2 int ,ID int)
    insert into @cc select 100,5
    insert into @cc select 175,5
    insert into @cc select 175,5
    insert into @cc select 220,6
    insert into @cc select 160,6
    insert into @cc select 170,6
    insert into @cc select 150,6
    insert into @cc select 100,6
    --
    select value1=(case when Num=1 then ltrim(d.value1) else '' end),c.value2,
    ID=(case when Num=1 then ltrim(d.ID) else '' end) from (select value2,ID,Num=(select count(1) from 
                (select value2,ID,row_number() over(order by ID) as Num from @cc) a
                 where a.ID=b.ID and a.Num<=b.Num)
    from (select value2,ID,row_number() over(order by ID) as Num from @cc) b) c left join (select sum(value2) as  value1,ID from @cc group by ID) d
    on c.ID = d.ID/*
    value1       value2      ID
    ------------ ----------- ------------
    450          100         5
                 175         
                 175         
    800          220         6
                 160         
                 170         
                 150         
                 100         
      

  16.   


    declare @cc table(value2 int ,ID int)
    insert into @cc select 100,5
    insert into @cc select 175,5
    insert into @cc select 175,5
    insert into @cc select 220,6
    insert into @cc select 160,6
    insert into @cc select 170,6
    insert into @cc select 150,6
    insert into @cc select 100,6--
    select value1=(case when Num=d.cun%2+1 then ltrim(d.value1) else '' end),c.value2,
    ID=(case when Num=d.cun%2+1 then ltrim(d.ID) else '' end) from (select value2,ID,Num=(select count(1) from 
                (select value2,ID,row_number() over(order by ID) as Num from @cc) a
                 where a.ID=b.ID and a.Num<=b.Num)
    from (select value2,ID,row_number() over(order by ID) as Num from @cc) b) c left join (select sum(value2) as  value1,ID,count(1) as cun from @cc group by ID) d
    on c.ID = d.ID
    /*
    value1       value2      ID
    ------------ ----------- ------------
                 100         
    450          175         5
                 175         
                 220         
    800          160         6
                 170         
                 150         
                 100