求一个两个表多行多栏位匹配的查询

jyh070207 2025-03-25 15:02:56

有表A,B, A为模板表,模板编号,序号,模板内容,一个模板可以有多条明细内容

B为具体事务表,有单号,序号,内容,一个单号可以有多条明细内容,
如何找出B用到的A模板,要求同一单号的行数与模板行数相同,而且,相应行的序号与内容要完全相同。

表a:
模板编号,序号,模板内容
A001,  1,'A01'
A001,2,'A02'
A001,3.'A03'
A002 1'B01'
A002 2' B02'

表b:
单号,序号,内容
'S001',  1,'A01'
'S001',2,'A02'
'S001',3.'A03'
'S002' 1'B01'

则S001单号会找到模板A001,行数相同3行,序号及内容相同。S002则找不到内容

...全文
667 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
dawugui 2025-04-15
  • 打赏
  • 举报
回复

create table A(modle_no varchar(20),no int,modle_con varchar(20))
insert into A values('A001',1,'A01')
insert into A values('A001',2,'A02')
insert into A values('A001',3,'A03')
insert into A values('A002',1,'B01')
insert into A values('A002',2,'B02')
create table B(table_no varchar(20),no int,table_con varchar(20))
insert into B values('S001',1,'A01')
insert into B values('S001',2,'A02')
insert into B values('S001',3,'A03')
insert into B values('S002',1,'B01')
go

select B.table_no , A.modle_no , sum(case when A.no = B.no and A.modle_con = B.table_con then 1 else 0 end) sl
from A , B
group by B.table_no , A.modle_no
having sum(case when A.no = B.no and A.modle_con = B.table_con then 1 else 0 end) = (select COUNT(1) from A T where T.modle_no = A.modle_no)
order by B.table_no , A.modle_no

drop table A
drop table B

/*
table_no modle_no sl


S001 A001 3

(1 行受影响)
*/

内容概要:本文档为一份《计算机程序设计语言(C++)》课程的实验报告,涵盖了从基础语法到面向对象编程的多个实验内容。实验内容包括基础语法练习(如银行存款计算、数值比较、科学计算)、控制结构(分支与循环,如闰年判断、素数判定、Kaprekar黑洞数)、数组操作(一维与二维数组的排序、查找、极值计算、杨辉三角)、函数定义与应用(递归、参数传递、函数重载)以及面向对象编程(类与对象的设计、继承、多态性、文件操作)。文档详细展示了每个实验的任务描述、具体C++代码实现、测试结果及实验分析,体现了从简单到复杂、逐步深入的学习路径。; 适合人群:具备C++基础语法知识,正在学习或巩固程序设计课程的在校大学生及初级编程学习者。; 使用场景及目标:①作为C++课程的配套实验指导材料,帮助学生通过实践掌握编程基础知识和核心算法;②用于自学练习,提升对循环、数组、函数和面向对象等核心概念的理解与编码能力。; 阅读建议:学习者应结合文档中的代码实例,动手在编程环境中逐一实现并调试,重点关注代码逻辑、边界条件处理和算法效率,通过对比预期输出与实际输出加深对知识点的掌握。

34,875

社区成员

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

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