这个语句如何改:select 工作令号,订单.订单费用 - 支出.支出费用 from 订单,支出 where 订单.工作令号 = 支出.工作令号

peanut2008 2009-06-16 11:54:27
这个语句如何改:
select 工作令号,订单.订单费用 - 支出.支出费用 from 订单,支出 where 订单.工作令号 = 支出.工作令号

订单和支出是两张表,每个表中一种工作令号都有多条数据,要将相同工作令号的费用合计后相减列出来,最好把大于零、小于零、等于零的各分一张表。
...全文
159 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
chowyi 2009-06-16
  • 打赏
  • 举报
回复
2楼牛X
ai_li7758521 2009-06-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 libin_ftsafe 的回复:]
SQL codeselect
isnull(a.工作令号,b.工作令号) as 工作令号,
isnull(a.订单费用,0) - isnull(b.支出费用,0) as 费用
from
(select 工作令号,sum(订单费用) as 订单费用 from 订单 group by 工作令号) a
full outer join
(select 工作令号,sum(支出费用) as 支出费用 from 支出 group by 工作令号) b
on
a.工作令号 = b.工作令号
[/Quote]钻钻出来,俺就看看吧
knifewei 2009-06-16
  • 打赏
  • 举报
回复
insert table1
select A.工作令号,A.工作令号,A.订单,A.订单费用 - B.支出,B.支出费用
from 订单 A,支出 B
where
A.工作令号 = B.工作令号
and A.订单费用 - B.支出>0

insert table2
select A.工作令号,A.工作令号,A.订单,A.订单费用 - B.支出,B.支出费用
from 订单 A,支出 B
where
A.工作令号 = B.工作令号
and A.订单费用 - B.支出=0

insert table3
select A.工作令号,A.工作令号,A.订单,A.订单费用 - B.支出,B.支出费用
from 订单 A,支出 B
where
A.工作令号 = B.工作令号
and A.订单费用 - B.支出<0
子陌红尘 2009-06-16
  • 打赏
  • 举报
回复
select 
isnull(a.工作令号,b.工作令号) as 工作令号,
isnull(a.订单费用,0) - isnull(b.支出费用,0) as 费用
from
(select 工作令号,sum(订单费用) as 订单费用 from 订单 group by 工作令号) a
full outer join
(select 工作令号,sum(支出费用) as 支出费用 from 支出 group by 工作令号) b
on
a.工作令号 = b.工作令号
knifewei 2009-06-16
  • 打赏
  • 举报
回复
select A.工作令号,A.订单.订单费用 - 支出.支出费用 from 订单 A,支出 B where 订单.工作令号 = 支出.工作令号



分清楚那个表字段,
justin_wkf 2009-06-16
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 fredrickhu 的回复:]
引用 2 楼 libin_ftsafe 的回复:
SQL codeselect
isnull(a.工作令号,b.工作令号) as 工作令号,
isnull(a.订单费用,0) - isnull(b.支出费用,0) as 费用
from
(select 工作令号,sum(订单费用) as 订单费用 from 订单 group by 工作令号) a
full outer join
(select 工作令号,sum(支出费用) as 支出费用 from 支出 group by 工作令号) b
on
a.工作令号 = b.工作令号



...牛人出马 我们…
[/Quote]俺也是來學習的
--小F-- 2009-06-16
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 libin_ftsafe 的回复:]
SQL codeselect
isnull(a.工作令号,b.工作令号) as 工作令号,
isnull(a.订单费用,0) - isnull(b.支出费用,0) as 费用
from
(select 工作令号,sum(订单费用) as 订单费用 from 订单 group by 工作令号) a
full outer join
(select 工作令号,sum(支出费用) as 支出费用 from 支出 group by 工作令号) b
on
a.工作令号 = b.工作令号
[/Quote]

...牛人出马 我们只有学习
((IDisposable)new A()).Dispose(); /// /// 利用传进来的sql语句查新数据库 /// /// sql语句 /// public string QuerySingle(string sql) { string single = null; using (OleDbConnection connection = new OleDbConnection(str)) { using (OleDbCommand command = new OleDbCommand(sql, connection)) { try { connection.Open(); object obj = command.ExecuteScalar(); if (obj != null) { single = command.ExecuteScalar().ToString(); } } catch { } } } return single; } /// /// 返回查询到的行数 /// /// /// public int Execute(string sql) { int result = 0; using (OleDbConnection connection = new OleDbConnection(str)) { using (OleDbCommand command = new OleDbCommand(sql,connection)) { try { connection.Open(); result = command.ExecuteNonQuery(); } catch { } } } return result; } //读记事本 FileStream fs = File.OpenRead(@"C:\Users\Administrator\Desktop\1.txt"); StreamReader sr = new StreamReader(fs, Encoding.Default); string s = sr.ReadLine(); string upStr = File.ReadAllText(@"C:\Users\Administrator\Desktop\1.txt", Encoding.Default); MessageBox.Show(upStr); sr.Close(); fs.Close(); //写记事本 FileStream fs = File.Create(@"C:\Users\Administrator\Desktop\1.txt"); StreamWriter sw = new StreamWriter(fs); sw.WriteLine("你的名字"); sw.Close(); fs.Close(); //messageBox控件 确定和取消 DialogResult dr=MessageBox.Show("确认删除吗?", "提示", MessageBoxButtons.OKCancel); if (dr == DialogResult.OK) { //用户选择确认的操作 MessageBox.Show("您选择的是【确认】"); } else if (dr == DialogResult.Cancel) { //用户选择取消的操作 MessageBox.Show("您选择的是【取消】"); } DialogResult result=MessageBox.Show("确定重新登录?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information); if (result == DialogResult.Yes) { //确定编码 }else if(result == DialogResult.No) { //取消编码 } 首先,ArrayList集合和List都是非静态类,使用时都必须先实列化。 ArrayList类似一个数组,但比数组优越的是它的长度大小可变,并且可以存放不同类型的变量,包括值类型和引用类型。 常用方法如下: 1、Add():方法用于添加一个元素到当前列表的末尾 2、AddRange():方法用于添加一批元素(数组或者集合)到列表的末尾 3、Remove():方法用于删除一个元素,通过元素本身的引用来删除,填什么删什么 4、RemoveAt():方法用于删除一个元素,通过索引值来删除 5、RemoveRange():用于删除一批元素,通过指定开始的索引和删除的数量来删除 6、Insert(int index,value):用于添加一个元素到指定位置,列表后面的元素依次往后移 7、InsertRange(int index,values):用于从指定位置开始添加一批元素,列表后面的元素依次往后移动 8、Contains():用于查看集合中是否包含所给元素 VS2017专业版和企业版激活密钥 需要的请自取~ Enterprise: NJVYC-BMHX2-G77MM-4XJMR-6Q8QF Professional: KBJFW-NXHK6-W4WJM-CRMQB-G3CDH 交通银行:622262 1210005830359 开户行:虹桥支行 开户人:王彬 邮寄地址:北京市大兴区西红门镇五连环工业园区鼎业路11号利亚德电视剧技术有限公司 收件人:王彬 电话:15022681976 select 单号 ,收入 = case when 收入>0 then 收入 else 0 end ,支出 = case when 收入>0 then 0 else 收入* -1 end from test select teamName,胜=sum( case when 胜利 end ),负 from TeamScore group by teamName select teamName,第1赛季得分 = case when seasonName = '第1赛季得分' then Score end ,第2赛季得分=case when seasonName = '第2赛季得分' then Score end ,第3赛季得分=case when seasonName = '第3赛季得分' then Score end from NBAScore group by teamName select studentld,语文=case when studentld = 001 then (sel ) end ,数学,英语 from table group by studentld select 商品编号,商品名称 ,王大销售数量=sum(case when 销售员 = 王大 then 销售数量 end) ,刘七销售数量=sum(case when 销售员 = 刘七 then 销售数量 end) ,张三销售数量=sum(case when 销售员 = 张三 then 销售数量 end) ,李四销售数量=sum(case when 销售员 = 张三 then 销售数量 end) ,张武销售数量=sum(case when 销售员 = 张三 then 销售数量 end) from MyOrderes group by 商品名称 -------分页 select top 7 * from table where ID not in (select top (7*(5-1)) from table order by ID asc) order by ID select TSName,TsAdderss from Tblstudent where tSid not in (select tSld from TbScroe) select t1.EmployeeID 员工编号,t1.FirstName 员工姓名,t2.FirstName 上司姓名 from Employee as t1 inner join Employee as t2 on t1.EmployeeID = t2.ReportsTo --------创建视图 create View 视图名称 as --要执行的sql语句 select TSName,TsAdderss from Tblstudent where tSid not in (select tSld from TbScroe) --执行视图 select * from 视图名称 --set和select的区别 大部分情况用set就可以,set不能将返回多个值获取到,相对严禁 select可以将获取返回的多个结果的最后一条,相对灵活 --事务 begin transaction //开启一个事务 declare @sum int = 0 //创建一个变量,记录sql语句报错次数 sql语句.................... set @sum = @sum + @@error //如果有一天sql语句报错@@error将会记录为1 sql语句.................... set @sum = @sum + @@error //如果有一天sql语句报错@@error将会记录为1 sql语句.................... set @sum = @sum + @@error //如果有一天sql语句报错@@error将会记录为1 if@sum<> 0 //如果不为0,说明有SQL语句执行错误 begin rollback //将事务回滚到执行之前 end else begin commit //SQL语句执行没有错误就提交事务 end --存储过程(无参无返回值) create procedure user //创建一个存储过程 as begin print 'Hellow world' end exec user //执行一个存储过程 --存储过程(带参数的) create procedure user //创建一个存储过程 @NAME nvarchar(50) //创建变量,数据类型及初始值 .................. //创建变量,数据类型及初始值 .................. //创建变量,数据类型及初始值 .................. //创建变量,数据类型及初始值 as begin select @NAME from table end exec user @NAME=王彬,@AGE=29 create procedure user @NAME nvarchar(20) @AGE int as begin select * from table where NAME = @NAME and AGE = @AGE end exec user @NAME = '男',@AGE = 15 select 单号 ,收入 = case when 收入>0 then 收入 else 0 end ,支出 = case when 收入>0 then 0 else 收入* -1 end from test select teamName,胜=sum( case when 胜利 end ),负 from TeamScore group by teamName select teamName,第1赛季得分 = case when seasonName = '第1赛季得分' then Score end ,第2赛季得分=case when seasonName = '第2赛季得分' then Score end ,第3赛季得分=case when seasonName = '第3赛季得分' then Score end from NBAScore group by teamName select studentld,语文=case when studentld = 001 then (sel ) end ,数学,英语 from table group by studentld select 商品编号,商品名称 ,王大销售数量=sum(case when 销售员 = 王大 then 销售数量 end) ,刘七销售数量=sum(case when 销售员 = 刘七 then 销售数量 end) ,张三销售数量=sum(case when 销售员 = 张三 then 销售数量 end) ,李四销售数量=sum(case when 销售员 = 张三 then 销售数量 end) ,张武销售数量=sum(case when 销售员 = 张三 then 销售数量 end) from MyOrderes group by 商品名称 --分页 select top 7 * from table where ID not in (select top (7*(5-1)) from table order by ID asc) order by ID select TSName,TsAdderss from Tblstudent where tSid not in (select tSld from TbScroe) select t1.EmployeeID 员工编号,t1.FirstName 员工姓名,t2.FirstName 上司姓名 from Employee as t1 inner join Employee as t2 on t1.EmployeeID = t2.ReportsTo --创建视图 create View 视图名称 as --要执行的sql语句 select TSName,TsAdderss from Tblstudent where tSid not in (select tSld from TbScroe) --执行视图 select * from 视图名称 --set和select的区别 大部分情况用set就可以,set不能将返回多个值获取到,相对严禁 select可以将获取返回的多个结果的最后一条,相对灵活 --事务 begin transaction //开启一个事务 declare @sum int = 0 //创建一个变量,记录sql语句报错次数 sql语句.................... set @sum = @sum + @@error //如果有一天sql语句报错@@error将会记录为1 sql语句.................... set @sum = @sum + @@error //如果有一天sql语句报错@@error将会记录为1 sql语句.................... set @sum = @sum + @@error //如果有一天sql语句报错@@error将会记录为1 if@sum<> 0 //如果不为0,说明有SQL语句执行错误 begin rollback //将事务回滚到执行之前 end else begin commit //SQL语句执行没有错误就提交事务 end --存储过程(无参无返回值) create procedure user //创建一个存储过程 as begin print 'Hellow world' end exec user //执行一个存储过程 --存储过程(带参数的) go //表示批处理的第一句话 create procedure user //创建一个存储过程 @NAME nvarchar(50) //创建变量,数据类型及初始值 .................. //创建变量,数据类型及初始值 .................. //创建变量,数据类型及初始值 .................. //创建变量,数据类型及初始值 as begin select @NAME from table end create procedure user @NAME nvarchar(20) @AGE int as begin select * from table where NAME = @NAME and AGE = @AGE end exec user @NAME = '男',@AGE = 15 ---分页存储过程 go create procedure fenye @countpize int //总页数 @everpize int //每页多少条数据 @sumpize //总页数 @pazeindex //当前页数 begin select * from table where betweem ((@pazeindex-1)*@everpize)+1 and @pazeindex*@everpize set @sumpize =(select cuont(*) from table) //总条数 set @countpize = @sumpize/@everpize //总页数 end ((IDisposable)new A()).Dispose(); /// /// 利用传进来的sql语句查新数据库 /// /// sql语句 /// public string QuerySingle(string sql) { string single = null; using (OleDbConnection connection = new OleDbConnection(str)) { using (OleDbCommand command = new OleDbCommand(sql, connection)) { try { connection.Open(); object obj = command.ExecuteScalar(); if (obj != null) { single = command.ExecuteScalar().ToString(); } } catch { } } } return single; } /// /// 返回查询到的行数 /// /// /// public int Execute(string sql) { int result = 0; using (OleDbConnection connection = new OleDbConnection(str)) { using (OleDbCommand command = new OleDbCommand(sql,connection)) { try { connection.Open(); result = command.ExecuteNonQuery(); } catch { } } } return result; } //读记事本 FileStream fs = File.OpenRead(@"C:\Users\Administrator\Desktop\1.txt"); StreamReader sr = new StreamReader(fs, Encoding.Default); string s = sr.ReadLine(); string upStr = File.ReadAllText(@"C:\Users\Administrator\Desktop\1.txt", Encoding.Default); MessageBox.Show(upStr); sr.Close(); fs.Close(); //写记事本 FileStream fs = File.Create(@"C:\Users\Administrator\Desktop\1.txt"); StreamWriter sw = new StreamWriter(fs); sw.WriteLine("你的名字"); sw.Close(); fs.Close(); //messageBox控件 确定和取消 DialogResult dr=MessageBox.Show("确认删除吗?", "提示", MessageBoxButtons.OKCancel); if (dr == DialogResult.OK) { //用户选择确认的操作 MessageBox.Show("您选择的是【确认】"); } else if (dr == DialogResult.Cancel) { //用户选择取消的操作 MessageBox.Show("您选择的是【取消】"); } DialogResult result=MessageBox.Show("确定重新登录?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information); if (result == DialogResult.Yes) { //确定编码 }else if(result == DialogResult.No) { //取消编码 } 首先,ArrayList集合和List都是非静态类,使用时都必须先实列化。 ArrayList类似一个数组,但比数组优越的是它的长度大小可变,并且可以存放不同类型的变量,包括值类型和引用类型。 常用方法如下: 1、Add():方法用于添加一个元素到当前列表的末尾 2、AddRange():方法用于添加一批元素(数组或者集合)到列表的末尾 3、Remove():方法用于删除一个元素,通过元素本身的引用来删除,填什么删什么 4、RemoveAt():方法用于删除一个元素,通过索引值来删除 5、RemoveRange():用于删除一批元素,通过指定开始的索引和删除的数量来删除 6、Insert(int index,value):用于添加一个元素到指定位置,列表后面的元素依次往后移 7、InsertRange(int index,values):用于从指定位置开始添加一批元素,列表后面的元素依次往后移动 8、Contains():用于查看集合中是否包含所给元素 https://pan.baidu.com/s/1LCfl5sPCb-HfQmL0Chjvmg#list/path=/ syll VS2017专业版和企业版激活密钥 需要的请自取~ Enterprise: NJVYC-BMHX2-G77MM-4XJMR-6Q8QF Professional: KBJFW-NXHK6-W4WJM-CRMQB-G3CDH 交通银行:622262 1210005830359 开户行:虹桥支行 开户人:王彬 邮寄地址:北京市大兴区西红门镇五连环工业园区鼎业路11号利亚德电视剧技术有限公司 收件人:王彬 电话:15022681976 /// /// 利用传进来的sql语句查新数据库 /// /// sql语句 /// public string QuerySingle(string sql) { string single = null; using (OleDbConnection connection = new OleDbConnection(str)) { using (OleDbCommand command = new OleDbCommand(sql, connection)) { try { connection.Open(); object obj = command.ExecuteScalar(); if (obj != null) { single = command.ExecuteScalar().ToString(); } } catch { } } } return single; }

34,588

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧