LTFT JION查询问题

zhongtao2005_2016 2019-04-20 11:57:31
A表里面有
wlbh:3212501-101 sl:20
wlbh:3212501-102 sl:20
wlbh:3212501-103 sl:20
wlbh:3212501-104 sl:20
B表里面有
wlbh:3212501-101 gg:A20 bb:01
wlbh:3212501-101 gg:A20 bb:02
wlbh:3212501-101 gg:A20 bb:03

我用left jion进行AB表进行关联查询,但是出来的数据包括B表全出来了,我想根据BB这个字段求最大的值,

我想生成以A表为准,数据全部出来,去掉B表里抽BB:01 和BB:02以BB:04最大的为准
...全文
394 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
holleno 2019-05-03
  • 打赏
  • 举报
回复
引用 8 楼 zhongtao2005_2016 的回复:
麻烦大家看下,红色部份是出现相同了,最后一列是00 01 02,我只想显示02这行一行,但是其它数据也要显示出来。目前要么显示02这一行,要么就出现其它列为NULL
我上面提供的方法是否有试过?
zhongtao2005_2016 2019-04-23
  • 打赏
  • 举报
回复
不会哟,用JOIN是全部连接多吗
xiaoxiangqing 2019-04-23
  • 打赏
  • 举报
回复
用join联接就行了
xzxmustwin 2019-04-23
  • 打赏
  • 举报
回复
引用 8 楼 zhongtao2005_2016 的回复:
麻烦大家看下,红色部份是出现相同了,最后一列是00 01 02,我只想显示02这行一行,但是其它数据也要显示出来。目前要么显示02这一行,要么就出现其它列为NULL

上面都说了用开窗函数啊
mssql 不像mysql 有limit可以方便取具体某条数据,个人认为用开窗函数解决类似的问题是最简单的 。
yilanwuyu123 2019-04-22
  • 打赏
  • 举报
回复
数据库 JOIN , ON 条件 MAX 了解一下, MAX结果 JOIN B表。拿走不谢。
zhongtao2005_2016 2019-04-22
  • 打赏
  • 举报
回复
select CASE WHEN [parentid]='root' THEN 0 ELSE 1 END FLAG,a.parentid,a.partid,a.BOMNAME,a.FATHERPARTVAR,a.CHINANAME,a.COUNTS,a.COMPAREPART,b.PARTFIXEDBACK1,b.PARTSTATE,b.kind,b.source,b.CHINADGREE,b.partvar,
(select max(b.partvar) from BOM_017 a
left join BOM_027 b on a.partid=b.partid
where a.parentid like 'root' and a.partid ='3211512-07-01' or a.parentid = '3211512-07-01' or a.bomname like'3211512-07-01%') as partvar2
from BOM_017 a
left join BOM_027 b on a.partid=b.partid
where a.parentid like 'root' and a.partid ='3211512-07-01' or a.parentid = '3211512-07-01' or a.bomname like'3211512-07-01%' order by flag asc

b.partvar就是00 01 02
a.partid就是3212515-103
zhongtao2005_2016 2019-04-22
  • 打赏
  • 举报
回复
麻烦大家看下,红色部份是出现相同了,最后一列是00 01 02,我只想显示02这行一行,但是其它数据也要显示出来。目前要么显示02这一行,要么就出现其它列为NULL
zhongtao2005_2016 2019-04-22
  • 打赏
  • 举报
回复
zhongtao2005_2016 2019-04-20
  • 打赏
  • 举报
回复
BB:03最大的为准
nongen 2019-04-20
  • 打赏
  • 举报
回复
select a.wlbh,a.sl,b.gg,b.bb from a left join (select wlbh,gg,max(bb) as bb from b group by wlbh,gg) b on a.wlbh=b.wlbh
xzxmustwin 2019-04-20
  • 打赏
  • 举报
回复
引用 4 楼 xzxmustwin 的回复:
利用开窗函数over给B表按wlbh分类并排序,取每种wlbh的第一条(每个第一条数据就是最大的)。

;with cte as (
 select wlbh,gg,bb.row_number() over (partition by wlbh order by bb desc) as number  from B
)

select A.*,cte.gg,cte.bb from A
left join cte on cte.wlbh = A.wlbh
where  cte.number = 1


;with cte as (
 select wlbh,gg,bb,row_number() over (partition by wlbh order by bb desc) as number  from B
)

select A.*,cte.gg,cte.bb from A
left join cte on cte.wlbh = A.wlbh
where  cte.number = 1

有个字符打错了
xzxmustwin 2019-04-20
  • 打赏
  • 举报
回复
利用开窗函数over给B表按wlbh分类并排序,取每种wlbh的第一条(每个第一条数据就是最大的)。

;with cte as (
 select wlbh,gg,bb.row_number() over (partition by wlbh order by bb desc) as number  from B
)

select A.*,cte.gg,cte.bb from A
left join cte on cte.wlbh = A.wlbh
where  cte.number = 1

holleno 2019-04-20
  • 打赏
  • 举报
回复
思路是: 要关联的记录属于该表中 部分字段相同,但某些字段为极值的情况 可以使用exists 来过滤. SELECT A.* , B.* FROM A LEFT JOIN B ON A.wlbh =b.wlbh AND NOT EXISTS (SELECT TOP 1 1 FROM B AS C WHERE C.wlbh =B.wlbh AND C.bb > B.bb)
卖水果的net 2019-04-20
  • 打赏
  • 举报
回复
-- 大概这样的一个用法 select a.*, b.* from a outer apply (select top 1 * from b where a.id = b.id order by b.xx ) b
内容概要:本文围绕基于Boost MPPT与双PI闭环双向DC-DC的离网光伏储能系统展开,系统性地研究了其动力学建模与稳态特性分析,并通过Simulink平台实现了完整的仿真验证。研究构建了涵盖光伏阵列、最大功率点跟踪(MPPT)控制、双向DC-DC变换器及储能电池的整体系统架构,采用Boost电路实现高效MPPT控制,并引入电压-电流双闭环PI控制策略,实现对储能系统精确的充放电管理。文章深入分析了系统在光照强度与环境温度双重扰动下的动态响应与稳态性能,验证了所提出模型的准确性与控制策略在不同工况下的鲁棒性与有效性,为离网光伏储能系统的优化设计与工程应用提供了坚实的理论基础和仿真依据。; 适合人群:具备电力电子技术、新能源系统或自动控制理论等相关专业知识背景,从事光伏储能系统、微电网或可再生能源领域研究与仿真的研究生、科研人员及工程技术人员。; 使用场景及目标:① 掌握离网光伏储能系统的完整建模方法与关键参数设计流程;② 深入理解Boost电路MPPT控制与双向DC-DC变换器双PI闭环控制的协同工作机制与实现细节;③ 通过Simulink仿真分析系统在光照突变、温度变化等动态扰动下的稳态特性、电压稳定性和能量管理性能;④ 为实际离网系统的控制器设计、参数整定及性能优化提供可靠的理论指导和仿真验证手段。; 阅读建议:建议结合提供的Simulink仿真模型同步学习,重点关注MPPT算法的实现逻辑、双PI控制器的参数整定方法以及系统在不同环境条件和负载变化下的响应特性,可在此基础上进一步探索多目标优化控制或智能控制策略的应用。

22,296

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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