有一个如下表:
拉别 工序名称 部门 计划数量 实际数量
D1 520直落 电子部 500 400
D1 520直落 电子部 1000 1000
D2 523直落 生产部 200 100
D2 523直落 生产部 700 500
。。现在要用SQL语句做如下统计:
将所有的计划数量和实际数量加总,并对比大小,同时统计出某个部门所有的实际总数量比计划总数量小的记录。拉别 工序名称 部门 总(计划数量) 总(实际数量) 甩数
D1 520直落 电子部 1500 1400 -100
D2 523直落 生产部 900 600 -300本人写了SQL,但是有错:
select 拉别,工序名称,部门,SUM(计划数量) as 计划总,SUM(实际数量) as 实际总,SUM(实际数量-计划数量) as 总甩数 from tb where 部门='生产部' and 总甩数<0 group by 拉别,工序名称,部门请指正。
拉别 工序名称 部门 计划数量 实际数量
D1 520直落 电子部 500 400
D1 520直落 电子部 1000 1000
D2 523直落 生产部 200 100
D2 523直落 生产部 700 500
。。现在要用SQL语句做如下统计:
将所有的计划数量和实际数量加总,并对比大小,同时统计出某个部门所有的实际总数量比计划总数量小的记录。拉别 工序名称 部门 总(计划数量) 总(实际数量) 甩数
D1 520直落 电子部 1500 1400 -100
D2 523直落 生产部 900 600 -300本人写了SQL,但是有错:
select 拉别,工序名称,部门,SUM(计划数量) as 计划总,SUM(实际数量) as 实际总,SUM(实际数量-计划数量) as 总甩数 from tb where 部门='生产部' and 总甩数<0 group by 拉别,工序名称,部门请指正。
解决方案 »
- 求查询语句
- 请问在数据库的一张表中插入一行数据,但由于我第一列是自动增加的不能往里添数据,请问这sql语句怎么写法?
- 怎么把下一行的starttime减一分钟插入当前行的endtime中?
- 如何在SQL SERVER查询分析器中访问SQL Anywhere数据库
- 用BCB怎样将sql server中的数据导入到Excel 急!
- 关于簇集索引的一些不解之处
- 急问:一个令人头疼的数据库结构问题!请高手狂入~~
- 求助,关于一个表的关键字段ID的自增 SQL语句
- 急,200分找一个数据库加密软件
- 两个表的关联查询问题
- 请大家 来帮帮忙,一条SQl语句出现了 奇怪的问题。。。。。。。。。。。。。。。
- 为什么这个结果很难实现了,求SQL语句
--> 生成测试数据表: [tb]
IF OBJECT_ID('[tb]') IS NOT NULL
DROP TABLE [tb]
GO
CREATE TABLE [tb] ([拉别] [nvarchar](10),[工序名称] [nvarchar](10),[部门] [nvarchar](10),[计划数量] [int],[实际数量] [int])
INSERT INTO [tb]
SELECT 'D1','520直落','电子部','500','400' UNION ALL
SELECT 'D1','520直落','电子部','1000','1000' UNION ALL
SELECT 'D2','523直落','生产部','200','100' UNION ALL
SELECT 'D2','523直落','生产部','700','500'--SELECT * FROM [tb]-->SQL查询如下:
SELECT 拉别,工序名称,部门,SUM(计划数量) AS 计划总, SUM(实际数量) AS 实际总,
SUM(实际数量-计划数量) AS 总甩数
FROM tb
WHERE 部门 = '生产部'
GROUP BY 拉别,工序名称,部门
HAVING SUM(实际数量-计划数量)<0
/*
拉别 工序名称 部门 计划总 实际总 总甩数
---------- ---------- ---------- ----------- ----------- -----------
D2 523直落 生产部 900 600 -300(1 行受影响)*/
SELECT 拉别,工序名称,部门,SUM(计划数量) AS 计划总, SUM(实际数量) AS 实际总,
SUM(实际数量-计划数量) AS 总甩数
FROM tb
--WHERE 部门 = '生产部'
GROUP BY 拉别,工序名称,部门
HAVING SUM(实际数量-计划数量)<0
/*
拉别 工序名称 部门 计划总 实际总 总甩数
---------- ---------- ---------- ----------- ----------- -----------
D1 520直落 电子部 1500 1400 -100
D2 523直落 生产部 900 600 -300(2 行受影响)
*/
SUM(实际数量-计划数量) AS 总甩数
FROM tb
WHERE 部门 = '生产部'
GROUP BY 拉别,工序名称,部门
HAVING SUM(实际数量-计划数量)<0