求一个结存逻辑SQL

weisai 2021-01-30 04:20:58
期初

仓库 产品 数量
A P001 100
A P002 200
B P001 120

发出
仓库 产品 发出数量
A P001 50
B P001 30

收入
仓库 产品 发出数量
A P001 10
A P002 20
C P001 15
C P003 10

要求结果

仓库 产品 期初 发出 收入 结存
A P001 100 50 10 60
A P002 200 0 20 220
B P001 120 30 0 90
C P001 0 0 15 15
C P003 0 0 10 10






...全文
138 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
RINK_1 2021-01-31
  • 打赏
  • 举报
回复



IF OBJECT_ID(N'TEMPDB.DBO.#T1') IS NOT NULL
DROP TABLE #T1
GO

CREATE TABLE #T1
(WAREHOUSE VARCHAR(10),
 ITEM VARCHAR(10),
 QTY INT)

INSERT INTO #T1
SELECT 'A','P001',100 UNION ALL
SELECT 'A','P002',200 UNION ALL
SELECT 'B','P001',120 


IF OBJECT_ID(N'TEMPDB.DBO.#T2') IS NOT NULL
DROP TABLE #T2
GO

CREATE TABLE #T2
(WAREHOUSE VARCHAR(10),
 ITEM VARCHAR(10),
 QTY INT)

INSERT INTO #T2
SELECT 'A','P001',50 UNION ALL
SELECT 'B','P001',30 

IF OBJECT_ID(N'TEMPDB.DBO.#T3') IS NOT NULL
DROP TABLE #T3
GO

CREATE TABLE #T3
(WAREHOUSE VARCHAR(10),
 ITEM VARCHAR(10),
 QTY INT)

INSERT INTO #T3
SELECT 'A','P001',10 UNION ALL
SELECT 'A','P002',20 UNION ALL
SELECT 'C','P001',15 UNION ALL
SELECT 'C','P003',10


SELECT COALESCE(A.WAREHOUSE,B.WAREHOUSE,C.WAREHOUSE) AS WAREHOUSE,
COALESCE(A.ITEM,B.ITEM,C.ITEM) AS ITEM,
ISNULL(A.QTY,0) AS QTY_BEGIN,ISNULL(B.QTY_DELIVERY,0),ISNULL(C.QTY_PURCHASE,0),
ISNULL(A.QTY,0)+ISNULL(C.QTY_PURCHASE,0)-ISNULL(B.QTY_DELIVERY,0) AS BALANCE
FROM #T1 A
FULL JOIN (SELECT WAREHOUSE,ITEM,SUM(QTY) AS QTY_DELIVERY FROM #T2 GROUP BY WAREHOUSE,ITEM) AS B ON A.ITEM=B.ITEM AND A.WAREHOUSE=B.WAREHOUSE
FULL JOIN (SELECT WAREHOUSE,ITEM,SUM(QTY) AS QTY_PURCHASE FROM #T3 GROUP BY WAREHOUSE,ITEM) AS C ON ISNULL(A.ITEM,B.ITEM)=C.ITEM AND ISNULL(A.WAREHOUSE,B.WAREHOUSE)=C.WAREHOUSE



Hello World, 2021-01-30
  • 打赏
  • 举报
回复

DECLARE @期初 TABLE(仓库 NVARCHAR(10) NOT NULL,产品 NVARCHAR(10) NOT NULL,数量 INT NOT NULL) 
INSERT @期初( 仓库, 产品, 数量)
VALUES('A','P001',100),('A','P002', 200),('B','P001', 120 )

DECLARE @发出 TABLE(仓库 NVARCHAR(10) NOT NULL, 产品 NVARCHAR(10) NOT NULL, 发出数量 INT NOT NULL)
INSERT @发出    (        仓库, 产品, 发出数量    )
VALUES('A','P001',50 ),('B','P001',30 )

DECLARE @收入  TABLE(仓库 NVARCHAR(10) NOT NULL, 产品 NVARCHAR(10) NOT NULL,  发出数量 INT NOT NULL)
INSERT @收入(仓库, 产品, 发出数量)
VALUES('A','P001',10),('A','P002',20),
('C','P001', 15	 ),('C','P003',10 )

--要求结果

--仓库        产品             期初              发出             收入            结存
--A           P001             100                 50              10                 60
--A           P002              200                0                20                 220
--B           P001              120                 30                0                 90
--C           P001                0                   0                 15               15
--C           P003               0                    0                  10               10 

SELECT p.仓库, p.产品, COALESCE(p.期初,0) 期初,  COALESCE(p.发出,0)*-1 发出, 
COALESCE(p.收入,0) 收入, COALESCE(p.期初,0)+COALESCE(p.发出,0)+COALESCE(p.收入,0) 结存 FROM (
SELECT 仓库, 产品, 数量,'期初' AS 类别 FROM @期初
UNION ALL SELECT 仓库, 产品, -发出数量, '发出' FROM @发出
UNION ALL SELECT 仓库, 产品, 发出数量,'收入' FROM @收入) list PIVOT (SUM(数量) FOR 类别 IN (期初,发出,收入)) p
ORDER BY p.仓库,p.产品
摘 要 9 前言 10 第一章 实体、对象命名规范 11 1.1 表名的命名规范 11 1.2 表的字段命名规范 12 1.3 序列命名规范 12 1.4 视图命名规范 12 1.5 触发器命名规范 12 1.6 存储过程命名规范 13 1.7 函数命名规范 13 1.8 包命名规范 13 第二章 实体关系(E-R)图集 14 第三章 数据字典 15 3.1 系统基础模块 15 3.1.1 表 15 3.1.1.1. 安全性评价标准表 (BASE_NormSec) 15 3.1.1.2. 安全性评价检查标准表 (Base_SCNorm) 15 3.1.1.3. 材料表 (Base_Material) 16 3.1.1.4. 材料类别表 (Base_SMaterial) 16 3.1.1.5. 材质表 (Base_Quality) 17 3.1.1.6. 仓库保管员表 (Base_Storekeeper) 17 3.1.1.7. 仓库表 (Base_Storage) 17 3.1.1.8. 仓库货架表 (Base_Carcase) 18 3.1.1.9. 货架层表 (Base_Layer) 18 3.1.1.10. 货架排表 (Base_Row) 18 3.1.1.11. 机组表 (Base_MGroup) 19 3.1.1.12. 计量单位表 (Base_Unit) 19 3.1.1.13. 计量单位关系表 (Base_UnitRelation) 19 3.1.1.14. 供货单位 (Base_Provider) 20 3.1.1.15. 供货商产品表 (Base_ProductProvider) 20 3.1.1.16. 汉字拼音表 (BASE$CHINESE) 21 3.1.1.17. 考勤类别表 (Base_CheckSort) 21 3.1.1.18. 汽车司机表 (Base_Driver) 22 3.1.1.19. 缺陷清册表 (Base_EDList) 22 3.1.1.20. 设备备品配件表 (BASE_EQUBACK) 22 3.1.1.21. 设备表 (Base_Equipment) 23 3.1.1.22. 设备技术图纸(Base_TechPicEquipment) 25 3.1.1.23. 生产系统表 (Base_ProSys) 25 3.1.1.24. 事故填报表 (Base_AFill) 25 3.1.1.25. 压力容器检验标准表 (Base_PCNorm) 26 3.1.1.26. 员工表 (Base_Emp) 26 3.1.1.27. 噪声监测点表 (Base_NoiseAddress) 27 3.1.1.28. 专业表 (Base_Specialty) 27 3.1.2 视图 28 3.1.3 存储过程 28 3.1.4 函数 28 3.1.4.1 fun_Encipher(加密用户密码函数) 28 3.1.4.2 fun_ConvertIDCard(身份证转换函数) 29 3.1.5 包 30 3.2 系统管理子模块 30 3.2.1 表 30 3.2.1.1 班组表 (sys_workgroup) 30 3.2.1.2 部门表 (sys_Dept) 31 3.2.1.3 角色表 (sys_role) 31 3.2.1.4 角色权限表 (sys_RolePriv) 31 3.2.1.5 模块菜单表 (Sys_MMenu) 31 3.2.1.6 权限表 (sys_priv) 32 3.2.1.7 人员职务关系表 (sys_UserDuty) 32 3.2.1.8 系统模块表 (Sys_Module) 33 3.2.1.9 系统日志表 (sys_log) 33 3.2.1.10 消息表 (sys_message) 33 3.2.1.11 用户表 (Sys_user) 34 3.2.1.12 用户权限表 (sys_UserPriv) 35 3.2.1.13 职务表 (sys_Duty) 35 3.2.2 视图 35 3.2.2.1 员工索引视图 (V_BASE_EMP) 35 3.2.2.2 事故填报索引视图 (V_Base_AFill) 36 3.2.3 存储过程 36 3.2.4 函数 36 3.2.5 包 36 3.3 系统公共部分 37 3.3.1 表 37 3.3.1.2 记事本 (Com_NoteBook) 37 3.3.1.3 规章制度表 (Com_Regulation) 37 3.3.1 视图 38 3.3.2 存储过程 38 3.3.2.1 DBMS_RANDOM(产生随机因子) 38 3.3.3 函数 39 3.3.3.1 fun_L2U(人民币转换函数) 39 3.3.3.2 fun_GetCVS(得到逗号分隔的行值字符串函数) 41 3.3.4 包 41 3.4 物资管理子模块 42 3.4.1 表 42 3.4.1.1 材料存放位置表 (MRP_Position) 42 3.4.1.2 采购发票表 (MRP_Invoice) 42 3.4.1.3 采购发票明细表 (MRP_InvoiceDetailed) 43 3.4.1.4 仓库收支存表(表头) (MRP_SBRep) 44 3.4.1.5 仓库收支存明细表 (MRP_BRDetailed) 44 3.4.1.6 代管物资登记表 (MRP_ProxyMeterail) 45 3.4.1.7 代管物资发放记录表 (MRP_PMRecord) 46 3.4.1.8 发票取款记录表 (MRP_IHRecord) 46 3.4.1.9 合同表 (MRP_Compact) 47 3.4.1.10 合同会签表 (MRP_CCountersign) 48 3.4.1.11 合同明细表 (MRP_CDetail) 48 3.4.1.12 合同执行情况表 (MRP_ExecSituation) 49 3.4.1.13 零星购置的申请表 (MRP_PFractional) 49 3.4.1.14 领/退料单/调拨单表 (MRP_MaterialsRequst) 50 3.4.1.15 收料单表 (MRP_BillMaterial) 52 3.4.1.16 收料单明细表 (MRP_BMDetailed) 53 3.4.1.17 物资结存表 (MRP_ChkInventory) 54 3.4.1.18 物资明细帐 (MRP_BillDetailBook) 54 3.4.1.19 物资申请计划表 (MRP_MRequestPlan) 55 3.4.1.20 物资申请计划明细表 (MRP_MRPDetailed) 56 3.4.1.21 帐册表 (MRP_BillBook) 56 3.4.2 视图 56 3.4.2.1 **库物资使用方向视图 (V_MRP_MATERIALSREQUST) 56 3.4.2.2 物资索引视图 (V_MRP_MaterialIdx) 57 3.4.3 存储过程 57 3.4.4 函数 57 3.4.5 包 57 3.5 设备管理检修子模块 58 3.5.1 表 58 3.5.1.1 车辆表 (Equ_Vehicle) 58 3.5.1.2 车辆修理记录表 (Equ_VFRecord) 59 3.5.1.3 春检/小修计划表 (Equ_LCPlan) 60 3.5.1.4 大修技改项目计划批复表 (Equ_RRAudit) 61 3.5.1.5 大修技改项目申请表 (Equ_RepairRebuild) 62 3.5.1.6 大修相关设备表 (Equ_EquRelation) 63 3.5.1.7 大修相关文档表 (Equ_DocRebuild) 64 3.5.1.8 工作票 (Equ_JobTicket) 64 3.5.1.9 工作票安全措施表 (Equ_JTSMethod) 68 3.5.1.10 工作票工作人员 (Equ_Worker) 69 3.5.1.11 工作票流程表 (Equ_JTFlowe) 69 3.5.1.12 工作票延期记录表 (Equ_JTAdjourn) 70 3.5.1.13 合同签定记录表 (Equ_CRecord) 70 3.5.1.14 检修工艺卡表 (Equ_CTCard) 73 3.5.1.15 检修工艺卡工序表 (Equ_CTIndex) 73 3.5.1.16 检修验收记录表 (Equ_CAccept) 74 3.5.1.17 检修质量验收表 (Equ_CTDetailed) 75 3.5.1.18 科室月度工作考核表 (Equ_DMCheck) 75 3.5.1.19 科室月度考核明细表 (Equ_DMCDetailed) 75 3.5.1.20 零星用工申请表 (Equ_FRequest) 76 3.5.1.21 密封点表 (Equ_SealSpot) 77 3.5.1.22 年度春检/小修计划表 (Equ_YPlan) 78 3.5.1.23 年度春检/小修计划明细表 (Equ_YPDetailed) 79 3.5.1.24 年检修计划表 (Equ_YVerification) 79 3.5.1.25 年检修计划明细表 (Equ_YVDetailed) 80 3.5.1.26 日常泄漏登记表 (Equ_Leakage) 80 3.5.1.27 设备报废申请表 (Equ_ReqDisused) 81 3.5.1.28 设备检修记录表 (Equ_CheckRecord) 83 3.5.1.29 设备检修申请表 (Equ_ECRequest) 84 3.5.1.30 设备检修申请明细表 (Equ_ECRDetai) 84 3.5.1.31 设备鉴定(台帐)表 (Equ_EquAppraise) 85 3.5.1.32 设备缺陷登记表 (Equ_Defect) 86 3.5.1.33 设备异动申请表 (Equ_Move) 89 3.5.1.34 设备异动申请审批表 (Equ_MoveAudit) 89 3.5.1.35 小修/春检计划明细表 (Equ_LCPDetailed) 89 3.5.1.36 小修/春检消耗材料表 (Equ_ConsumMaterial) 90 3.5.1.37 小修用工表 (Equ_LCFarmer) 90 3.5.1.38 验收试验表 (Equ_AExp) 90 3.5.1.39 月度分场设备管理工作考核表 (Equ_MECheck) 91 3.5.1.40 月度分场设备管理工作考核明细表 (Equ_MECDetailed) 92 3.5.1.41 周检修计划表 (Equ_WVerification) 93 3.5.2 视图 94 3.5.2.1 春检小修计划视图 (V_Equ_LCPlan) 94 3.5.2.2 设备检索视图 (V_Base_Equipment) 94 3.5.3 存储过程 95 3.5.4 函数 95 3.5.5 包 95 3.6 运行管理子模块 96 3.6.1 表 96 3.6.1.1 班组计划管理表 (Pro_WGPlan) 96 3.6.2 视图 96 3.6.2.1 操作票合格率统计视图 (PRO_OPRTICKET) 96 3.6.2.2 生产日报去年同期视图(V_PRO_DRP_LASTYEAR) 97 3.6.3 存储过程 98 3.6.4 函数 98 3.6.5 包 98 3.7 安全监督管理子模块 99 3.7.1 表 99 3.7.1.1 "废气"处理情况表 (Sec_Rep_ExhaustFume) 99 3.7.2 视图 99 3.7.3 存储过程 99 3.7.3.1 pro_getSecStat(两票及安全记录统计) 99 3.7.4 函数 104 3.7.5 包 104 第四章 “数据库”物理设计 105 4.1 “表空间”物理存储参数 105 4.2 数据库系统实体创建SQL规程 105 4.3 数据库SQL规程 105 4.4 表空间SQL规程 105 4.4.1 永久表空间 ERMISDATA01 105 4.4.2 临时表空间 ERMISTEMP 105 4.4.3 索引表空间ERMISIDX 106 4.5 回退段SQL规程 106 4.6 数据库用户实体创建SQL规程 107 4.7 数据库例程创建SQL规程 107 4.8 数据库角色 107 4.9 角色创建SQL规程 107 4.10 角色授权SQL规程 108 4.11 创建用户SQL规程 108 第五章 后台维护手册 109 5.1 ORACLE9i在HP-UX11i下的安装 109 5.1.1 先决条件 109 5.1.1.1 图形终端 109 5.1.1.2 JDK 110 5.1.1.3 /tmp空间 110 一、直接方法: 110 二、间接方法: 111 5.1.1.4 内存 111 5.1.1.5 swap 111 5.1.1.6 OS 补丁 111 5.1.1.7 系统时钟 112 5.1.2 安装步骤 112 5.1.2.1 创建用户与组 112 5.1.2.2 创建oracle 软件安装的挂载点 113 5.1.2.3 为oratab文件创建目录 113 5.1.2.4 配置内核参数 113 5.1.2.5 修改系统Bug 114 5.1.2.6 配置环境变量 114 5.1.2.7 设置umask 115 5.1.2.8 挂载光驱 115 5.2 oracle9i 在hp-ux11i下的维护 122 5.2.1 ERMIS数据库的备份 122 5.2.1.1 逻辑备份(exp/imp)方法 122 5.2.1.2 RMAN备份 124 第六章 项目总结报告 126 附录 127 A. 数据库服务器硬件配置清单 127 B. 系统中所有表的数据量估算清单 127 C. 系统中的SQL查询频率估算清单 127

34,576

社区成员

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

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