sql查询语句同一表中,不同行之间字段相减
sql语句查询,表A中字段:a1b1c1a2b2c2(注:c为日期型)当a1=a2且b1>0,b2<0时,计算出c2-c1的值d,如果a2,b2,c2这行不存在,则计算出...
sql语句查询,表A中字段:
a1 b1 c1
a2 b2 c2
(注:c为日期型)
当a1=a2且b1>0,b2<0时,计算出c2-c1的值d,
如果a2,b2,c2这行不存在,则计算出当天日期减去c1的值d。怎么定义表中的第一行或者第二行?因为查询出得表最多有两行,要用第一行的c值减去第二行的c值用什么表达式?例如表明为table“table第一行c-table第二行c=d”sql语句要怎么写? 展开
a1 b1 c1
a2 b2 c2
(注:c为日期型)
当a1=a2且b1>0,b2<0时,计算出c2-c1的值d,
如果a2,b2,c2这行不存在,则计算出当天日期减去c1的值d。怎么定义表中的第一行或者第二行?因为查询出得表最多有两行,要用第一行的c值减去第二行的c值用什么表达式?例如表明为table“table第一行c-table第二行c=d”sql语句要怎么写? 展开
2个回答
2013-08-06
展开全部
先按A 然后B 升序排列 再加一个 递增int列
形成一个临时表 再从这个临时表
分组得出 A列 COUNT (2) 和最小主键值(递增int列) 形成一个临时查询表TMP
然后取出TABLE里的A列 去JION 当 TMP.COUNT =2的 A 主键列
如果主键不是最小主键 那么作为被减数 最小的作为减数
可以得出你要的A和D COUNT=1的 直接用 NOW去减
形成一个临时表 再从这个临时表
分组得出 A列 COUNT (2) 和最小主键值(递增int列) 形成一个临时查询表TMP
然后取出TABLE里的A列 去JION 当 TMP.COUNT =2的 A 主键列
如果主键不是最小主键 那么作为被减数 最小的作为减数
可以得出你要的A和D COUNT=1的 直接用 NOW去减
2013-08-06
展开全部
根据责任单一原则, Sql语句应该只做数据库查询操作, 你的具体复杂业务流程最好放在业务层做处理.那这个问题就非常简单. Sql只要把表这两行读出来,剩下的你代码里去解决,就一个减法而已.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询