现有钢网信息表,还有一张生产明细表,一张产品表,生产明细表里有每天每个产品的生产数,而这生产数又是钢网的使用次数,目前生产明细表里没有可以关联钢网明细表的字段,业务也不允许在生产明细表里添加字段,一个钢网可以多个机种使用,而一个机种也有多个钢网,也有的一个机种只对应一个钢网,如果需要求出每个钢网的使用次数该怎么求,现有钢网信息表,还有一张生产明细表,一张产品表,生产明细表里有每天每个产品的生产数,而这生产数又是钢网的使用次数,目前生产明细表里没有可以关联钢网明细表的字段,业务也不允许在生产明细表里添加字段,一个钢网可以多个机种使用,而一个机种也有多个钢网,现有钢网信息表,还有一张生产明细表,一张产品表,生产明细表里有每天每个产品的生产数,而这生产数又是钢网的使用次数,目前生产明细表里没有可以关联钢网明细表的字段,业务也不允许在生产明细表里添加字段,一个钢网可以多个机种使用,而一个机种也有多个钢网,也有的一个机种只对应一个钢网,如果需要求出每个钢网的使用次数该怎么求,也有的一个机种只对应一个钢网,如果需要求出每个钢网的使用次数用sql server 怎么做

时间: 2023-08-14 22:04:54 浏览: 46
可以通过以下步骤求出每个钢网的使用次数: 1. 在生产明细表中,根据产品表的机种字段进行分组,得到每个机种的总生产数。 ``` SELECT 产品表.机种, SUM(生产明细表.生产数) AS 总生产数 FROM 生产明细表 INNER JOIN 产品表 ON 生产明细表.产品编号 = 产品表.产品编号 GROUP BY 产品表.机种 ``` 2. 根据上一步得到的每个机种的总生产数,在钢网信息表中找到对应的钢网,将钢网使用次数累加。 ``` SELECT 钢网信息表.钢网编号, SUM(机种总生产数) AS 使用次数 FROM ( SELECT 产品表.机种, SUM(生产明细表.生产数) AS 机种总生产数 FROM 生产明细表 INNER JOIN 产品表 ON 生产明细表.产品编号 = 产品表.产品编号 GROUP BY 产品表.机种 ) AS 机种总生产表 INNER JOIN 钢网信息表 ON 钢网信息表.机种 = 机种总生产表.机种 GROUP BY 钢网信息表.钢网编号 ``` 这样就可以得到每个钢网的使用次数。如果有多个钢网对应同一个机种,那么这些钢网的使用次数会被累加起来。
相关问题

SQL Server中有个钢网信息表,每个钢网的投入时间都不一样,并且对应的机种也不一样,有个钢网使用明细表,现在我想找出每个钢网从投入时间到一个截至时间的使用次数,这个投入时间每个钢网的都不一样,需要从钢网信息表里查询过来,怎么求

可以使用SQL Server中的子查询和聚合函数来实现这个需求。具体操作如下: 1. 在钢网使用明细表中,按照钢网和截至时间进行分组,使用COUNT函数计算每个钢网在截至时间之前的使用次数。 2. 在子查询中,从钢网信息表中查询每个钢网的投入时间和对应的机种。 3. 将子查询和钢网使用明细表进行连接,以钢网和截至时间为条件进行匹配。 4. 最后将结果按照钢网和截至时间进行分组,以便查看每个钢网在不同的截至时间之前的使用次数。 具体SQL语句如下: ``` SELECT 网号, 截至时间, COUNT(*) AS 使用次数 FROM 钢网使用明细表 INNER JOIN ( SELECT 网号, 投入时间, 机种 FROM 钢网信息表 ) AS 网信息 ON 钢网使用明细表.网号 = 网信息.网号 WHERE 钢网使用明细表.使用时间 <= 截至时间 GROUP BY 网号, 截至时间; ``` 其中,`钢网使用明细表`和`钢网信息表`分别为钢网使用明细表和钢网信息表的表名,`网号`、`投入时间`、`机种`、`使用时间`和`截至时间`为对应的列名。请根据实际情况进行修改。

一个钢网可以供多个产品使用,一个产品也可以有多个钢网,但是都是在规定的线使用,每个产品生产一次就消耗一次钢网使用次数,现在想求钢网的使用次数,sql如何做到有的时一对一的产品,有的是一对多的产品,求出每个钢网的使用次数

假设钢网表为 steel_net,产品表为 product,它们之间的关系是多对多,中间需要一个关联表 product_steel_net 记录产品和钢网的关联关系,并记录使用次数。 可以使用以下 SQL 语句来查询每个钢网的使用次数: ``` SELECT steel_net.steel_net_id, SUM(product_steel_net.use_times) AS use_times FROM steel_net LEFT JOIN product_steel_net ON steel_net.steel_net_id = product_steel_net.steel_net_id GROUP BY steel_net.steel_net_id ``` 这里使用了左连接,因为有些钢网可能尚未使用过,所以需要包含所有钢网。然后使用聚合函数 SUM 来计算每个钢网的使用次数,并按照钢网 ID 进行分组。最终结果会得到每个钢网的使用次数。

相关推荐

Dim worksheet As Excel.Worksheet = CType(workbook.Sheets(i + 1), Excel.Worksheet) worksheet.Name = result(i).Key & "钢网架" worksheet.Cells.VerticalAlignment = Excel.Constants.xlCenter worksheet.Cells.HorizontalAlignment = Excel.Constants.xlCenter worksheet.Cells.Font.Name = "宋体" worksheet.Cells.Font.Color = Color.Black '设置标题 Dim logoRange As Excel.Range = worksheet.Range(worksheet.Cells(1, 1), worksheet.Cells(1, 1)) '选取单元格 logoRange.Value2 = "深圳斯坦雷电气有限公司" logoRange.HorizontalAlignment = Excel.Constants.xlLeft logoRange.Font.Size = 14 logoRange.EntireRow.RowHeight = 18.75 '设置标题 Dim titleRange As Excel.Range = worksheet.Range(worksheet.Cells(2, 1), worksheet.Cells(2, 8)) '选取单元格 titleRange.Merge(True) '合并单元格 titleRange.Value2 = resultWorkshop(w).Key & "钢网放置架记录表" titleRange.Font.Size = 23 titleRange.Font.Bold = True titleRange.EntireRow.RowHeight = 32.25 '副标题 Dim tipRange1 As Excel.Range = worksheet.Range(worksheet.Cells(3, 1), worksheet.Cells(3, 4)) worksheet.Range("A3:D3").Merge(0) '合并单元格 tipRange1.Value2 = "第一层" tipRange1.Font.Size = 20 tipRange1.Font.Bold = True '副标题 Dim tipRange2 As Excel.Range = worksheet.Range(worksheet.Cells(3, 4), worksheet.Cells(3, 8)) worksheet.Range("E3:H3").Merge(0) '合并单元格 tipRange2.Value2 = "第二层" tipRange2.Font.Size = 20 tipRange2.Font.Bold = True '列标题 Dim headerStr As String() = {"序号", "机种名", "使用次数", "备注", "序号", "机种名", "使用次数", "备注"} For j = 0 To headerStr.Length - 1 worksheet.Cells(4, j + 1) = headerStr(j) worksheet.Range(worksheet.Cells(4, j + 1), worksheet.Cells(4, j + 1)).RowHeight = 29.25 Select Case j Case 0, 4 worksheet.Range(worksheet.Cells(4, j + 1), worksheet.Cells(4, j + 1)).ColumnWidth = 5.38 Case 1, 5 worksheet.Range(worksheet.Cells(4, j + 1), worksheet.Cells(4, j + 1)).ColumnWidth = 27 worksheet.Range(worksheet.Cells(4, j + 1), worksheet.Cells(4, j + 1)).EntireColumn.WrapText = True Case 2, 6 worksheet.Range(worksheet.Cells(4, j + 1), worksheet.Cells(4, j + 1)).ColumnWidth = 10.75 Case 3, 7 worksheet.Range(worksheet.Cells(4, j + 1), worksheet.Cells(4, j + 1)).ColumnWidth = 12.13 worksheet.Range(worksheet.Cells(4, j + 1), worksheet.Cells(4, j + 1)).EntireColumn.Font.Size = 10 worksheet.Range(worksheet.Cells(4, j + 1), worksheet.Cells(4, j + 1)).EntireColumn.WrapText = True End Select Next 保持原有逻辑进行优化,让代码有更好的可读性,可维护性,提高性能,并说明理由

Public Function UpdateStencilData(stencil As StencilDetailEntity) As Boolean Dim arrSql(2) As String If stencil.IsDateEdit Then '当状态不是维修状态下不用添加维修时间 arrSql(0) = $"UPDATE M_StencilDetails SET StencilID='{stencil.StencilID}',StencilName='{stencil.StencilName}',Thickness='{stencil.Thickness}' ,location_char='{stencil.Location.Substring(0, 1)}',location_no='{stencil.Location.Substring(1)}',workshop='{stencil.WorkShop}' ,MakeDate='{stencil.MakeDate}',StartDate='{stencil.StartDate}',StateID ={stencil.StateID},stencilUsesCount={stencil.StencilUseCount} ,Notes='{stencil.Notes}' " Else '当状态不是维修状态下不用添加维修时间 arrSql(0) = $"UPDATE M_StencilDetails SET StencilID='{stencil.StencilID}',StencilName='{stencil.StencilName}',Thickness='{stencil.Thickness}' ,location_char='{stencil.Location.Substring(0, 1)}',location_no='{stencil.Location.Substring(1)}',workshop='{stencil.WorkShop}' ,MakeDate='{stencil.MakeDate}',StateID ={stencil.StateID},stencilUsesCount={stencil.StencilUseCount} ,Notes='{stencil.Notes}' ,StartDate=NULL" End If If stencil.StateID = 3 Then arrSql(0) = arrSql(0) & $",repairDate='{stencil.RepairDate}' " End If arrSql(0) = arrSql(0) & $" where ID={stencil.ID}" '钢网编号发生改变时 If stencil.StencilID <> stencil.oldStencilID Then arrSql(1) = $"delete M_StencilAndProduct where StencilID='{stencil.oldStencilID}'" arrSql(2) = $"update M_StencilOperationLog set StencilId='{stencil.StencilID}' where StencilID='{stencil.oldStencilID}'" Else arrSql(1) = $"delete M_StencilAndProduct where StencilID='{stencil.StencilID}'" arrSql(2) = $"update M_StencilOperationLog set StencilId='{stencil.StencilID}' where StencilID='{stencil.StencilID}'" End If ReDim Preserve arrSql(3) arrSql(3) = $"insert into M_StencilOperationLog (StencilID,Time,Nickname,Reason,Operation) values ('{stencil.StencilID}','{stencil.Time}','{stencil.Nickname}' ,'{stencil.OperationReason}','{stencil.Operation}')" If stencil.StateID <> 2 Then ReDim Preserve arrSql(4) If stencil.ProductName.Count <> 0 Then Dim sql = $"insert into M_StencilAndProduct (StencilID,ProductName) values('{stencil.StencilID}','{stencil.ProductName(0)}')" For i = 1 To stencil.ProductName.Count - 1 sql += $",('{stencil.StencilID}','{stencil.ProductName(i)}')" Next arrSql(4) = sql End If End If Return DBHel.ExecuteNoQueryMul(arrSql, 1) > 0 End Function 请在原有逻辑的情况下对以上代码进行优化,让代码具有更好的可读性,可维护性,提升性能,并说出理由

最新推荐

recommend-type

Gerber文件各层扩展名与原PCB各层的对应关系

protel所产生的gerber,都是统一规范的,具体表现以下方面: 1.扩展名的第一位g一般指gerber的意思 2.扩展名的第二位代表层的面,b代表bottom面,t代表top面,g+数字代表中间线路层,g+p+数字代表电源层。...
recommend-type

Gerber文件各层用途

ProtelDXP电路板可以有32个信号层,其中Top是顶层,Mid1~30是中间层,Bottom是底层。习惯上Top层又称为元件层,Botton层又称为焊接层。 信号层用于放置连接数字或模拟信号的铜膜走线。 (2)Masks:掩膜 Top/...
recommend-type

PCB工艺设计规范,欢迎下载

15.2 钢网图要求 56 15.3 钻孔图内容要求 56 16 背板部分 56 16.1 背板尺寸设计 56 16.1.1 可加工的尺寸范围 56 16.1.2 拼板方式 57 16.1.3 开窗和倒角处理 57 16.2 背板器件位置要求 58 16.2.1 基本要求 58 16.2.2 ...
recommend-type

HTML+CSS制作的个人博客网页.zip

如标题所述,内有详细说明
recommend-type

基于MATLAB实现的SVC PSR 光谱数据的读入,光谱平滑,光谱重采样,文件批处理;+使用说明文档.rar

CSDN IT狂飙上传的代码均可运行,功能ok的情况下才上传的,直接替换数据即可使用,小白也能轻松上手 【资源说明】 基于MATLAB实现的SVC PSR 光谱数据的读入,光谱平滑,光谱重采样,文件批处理;+使用说明文档.rar 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2020b;若运行有误,根据提示GPT修改;若不会,私信博主(问题描述要详细); 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可后台私信博主; 4.1 期刊或参考文献复现 4.2 Matlab程序定制 4.3 科研合作 功率谱估计: 故障诊断分析: 雷达通信:雷达LFM、MIMO、成像、定位、干扰、检测、信号分析、脉冲压缩 滤波估计:SOC估计 目标定位:WSN定位、滤波跟踪、目标定位 生物电信号:肌电信号EMG、脑电信号EEG、心电信号ECG 通信系统:DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪、数字信号调制、误码率、信号估计、DTMF、信号检测识别融合、LEACH协议、信号检测、水声通信 5、欢迎下载,沟通交流,互相学习,共同进步!
recommend-type

zigbee-cluster-library-specification

最新的zigbee-cluster-library-specification说明文档。
recommend-type

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire
recommend-type

【实战演练】MATLAB用遗传算法改进粒子群GA-PSO算法

![MATLAB智能算法合集](https://static.fuxi.netease.com/fuxi-official/web/20221101/83f465753fd49c41536a5640367d4340.jpg) # 2.1 遗传算法的原理和实现 遗传算法(GA)是一种受生物进化过程启发的优化算法。它通过模拟自然选择和遗传机制来搜索最优解。 **2.1.1 遗传算法的编码和解码** 编码是将问题空间中的解表示为二进制字符串或其他数据结构的过程。解码是将编码的解转换为问题空间中的实际解的过程。常见的编码方法包括二进制编码、实数编码和树形编码。 **2.1.2 遗传算法的交叉和
recommend-type

openstack的20种接口有哪些

以下是OpenStack的20种API接口: 1. Identity (Keystone) API 2. Compute (Nova) API 3. Networking (Neutron) API 4. Block Storage (Cinder) API 5. Object Storage (Swift) API 6. Image (Glance) API 7. Telemetry (Ceilometer) API 8. Orchestration (Heat) API 9. Database (Trove) API 10. Bare Metal (Ironic) API 11. DNS
recommend-type

JSBSim Reference Manual

JSBSim参考手册,其中包含JSBSim简介,JSBSim配置文件xml的编写语法,编程手册以及一些应用实例等。其中有部分内容还没有写完,估计有生之年很难看到完整版了,但是内容还是很有参考价值的。