首页 新闻 会员 周边 捐助

sql 分组后 对应的组行之间 相减 求大侠帮忙

0
悬赏园豆:10 [已解决问题] 解决于 2014-06-10 20:46

如图:

 

希望的是 分组后的 csValues 行 相减 

 

最后结果

 id  name  csID  csValues

1    张三     1     1

2   李四      2     -1 

 

或者 分组后的对应的行 的最后一行 减去 开始第一行

 

对应的c#代码

 

                var dataList = from item in dt.AsEnumerable().AsParallel()
                               group item by item.Field<int>("dyn_vehid") into m
                               where m.Count() > 1
                               select new
                               {
                                   dyn_vehid = m.Key,
                                   v_no = m.First().Field<string>("v_no"),
                                   dyn_latitude = m.First().Field<decimal>("dyn_latitude"),
                                   Dyn_Longitude = m.First().Field<decimal>("Dyn_Longitude"),
                                   C_EnterpriseName = m.First().Field<string>("C_EnterpriseName"),
                                   dyn_Time = "".TimeDiffMinute(m.First().Field<DateTime>("dyn_Time").ToString(), m.Last().Field<DateTime>("dyn_Time").ToString())
                               };

求改成sql ? 谢谢 

 

sql 测试数据语句 

USE csDemo
select * from  csDemo

CREATE table csTb(
id int  ,
name varchar(20),
csID int ,
csValues int
)
insert into csTb values(1,'张三',1,1)

insert into csTb values(2,'张三',1,2)

insert into csTb values(3,'李四',2,3)
insert into csTb values(4,'李四',2,4)
insert into csTb values(5,'李四',2,6)

insert into csTb values(6,'王无',3,7)


SELECT * FROM  CsTB where csID IN(
select csID from csTB group by csID
HAVING COUNT(*)>1
)
s_p的主页 s_p | 初学一级 | 园豆:140
提问于:2014-06-10 17:01
< >
分享
最佳答案
0
select name,csID,sum(csValues)*-1+2*max(csValues) from csTb group by name,csID having count(1)>1
收获园豆:10
不懂cc | 小虾三级 |园豆:877 | 2014-06-10 17:31

你改名字了啊 博客?

s_p | 园豆:140 (初学一级) | 2014-06-10 20:46

晚上接着你的完善了下 

 

with 
temp as 
( 
   select csID, sum(csValues)*-1+2*max(csValues) as cssp
       from csTb 
       group by csID 
       having count(1)>1
) 

select t1.* ,t2.* from temp t1 
            left join 
      ( select distinct csID,name from csTB) t2 on t1.csId=t2.csId

 

s_p | 园豆:140 (初学一级) | 2014-06-10 23:18

@s_p: 不太明白你这个id是需要怎么取。

不懂cc | 园豆:877 (小虾三级) | 2014-06-10 23:34

@achu.me: 那个用了关联查询  毕竟还有显示其他自动 还不睡觉啊  

s_p | 园豆:140 (初学一级) | 2014-06-10 23:36

@achu.me:这里没取id 是csid 那个id 取不出 分组后 id无法 确定是哪条也没有意思 准备睡觉了

s_p | 园豆:140 (初学一级) | 2014-06-10 23:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册