ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 6219|回复: 6

[求助] 拜求access SQL查询语句 【多条件取最大值】

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-11-30 19:07 | 显示全部楼层 |阅读模式
求教各位大神,貌似应该用SQL,求查询语句,多谢。

表一:包含字段1~5
表二:包含字段5和数值

需要用字段5一对一关联两张表格,创建一个查询,如下图,将字段1~3中相等的条件取最大值显示出来:
ACCESS 条件查询取值.jpg

TA的精华主题

TA的得分主题

发表于 2014-12-3 11:46 | 显示全部楼层
  1. SELECT P3.*,P2.最大 FROM (表二 P1
  2. LEFT JOIN
  3. (SELECT 最大,FIRST(Q1.字段5) AS 新字段5 FROM
  4. (SELECT T1.*,T2.数值 FROM 表一 AS T1
  5. LEFT JOIN 表二 AS T2
  6. ON T1.字段5=T2.字段5)Q1
  7. ,
  8. (SELECT 字段1,字段2,字段3,MAX(数值) as 最大 from
  9. 表一,表二
  10. WHERE 表一.字段5=表二.字段5
  11. group by 字段1,字段2,字段3)Q2
  12. where Q1.字段1=Q2.字段1 AND Q1.字段2=Q2.字段2 AND T1.字段3=Q2.字段3 AND Q1.数值=Q2.最大
  13. group by Q1.字段1,Q1.字段2,Q1.字段3,Q2.最大)P2
  14. ON P1.字段5=P2.新字段5)
  15. RIGHT JOIN 表一 P3
  16. ON P1.字段5=P3.字段5
复制代码
2014-12-03_114638.png

TA的精华主题

TA的得分主题

发表于 2014-12-3 11:49 | 显示全部楼层
  1. SELECT P3.*,P1.数值,P2.最大 FROM (表二 P1
  2. LEFT JOIN
  3. (SELECT 最大,FIRST(Q1.字段5) AS 新字段5 FROM
  4. (SELECT T1.*,T2.数值 FROM 表一 AS T1
  5. LEFT JOIN 表二 AS T2
  6. ON T1.字段5=T2.字段5)Q1
  7. ,
  8. (SELECT 字段1,字段2,字段3,MAX(数值) as 最大 from
  9. 表一,表二
  10. WHERE 表一.字段5=表二.字段5
  11. group by 字段1,字段2,字段3)Q2
  12. where Q1.字段1=Q2.字段1 AND Q1.字段2=Q2.字段2 AND T1.字段3=Q2.字段3 AND Q1.数值=Q2.最大
  13. group by Q1.字段1,Q1.字段2,Q1.字段3,Q2.最大)P2
  14. ON P1.字段5=P2.新字段5)
  15. RIGHT JOIN 表一 P3
  16. ON P1.字段5=P3.字段5
复制代码
汗,漏了数值字段,现补上。

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-12-5 22:03 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
wuxiang_123 发表于 2014-12-3 11:49
汗,漏了数值字段,现补上。

多谢版主,弱弱的问一句,语名中的P1,P2..T1,T2...Q1 Q2都是什么意思呢?

表一和表二的数据最终在查询一和查询二中取出的,我套用了这段代码,只替换了字段名称,但总是提示语法错误或找不到Q1.字段1=Q2.字段1 AND Q1.字段2=Q2.。。。。抓狂中,大神救我

TA的精华主题

TA的得分主题

发表于 2014-12-5 22:30 | 显示全部楼层
myring 发表于 2014-12-5 22:03
多谢版主,弱弱的问一句,语名中的P1,P2..T1,T2...Q1 Q2都是什么意思呢?

表一和表二的数据最终在查询 ...


表别名。把你的语句和附件贴上来吧。

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-12-5 23:39 | 显示全部楼层
wuxiang_123 发表于 2014-12-5 22:30
表别名。把你的语句和附件贴上来吧。

太感谢啦,附件和语句如下:

SELECT P3.*,P1.更新单价,P2.最大 FROM (2更新价格 查询 P1

LEFT JOIN

(SELECT 最大,FIRST(Q1.型号) AS 新型号 FROM

(SELECT T1.*,T2.更新单价 FROM 1明细表 查询 AST1

LEFT JOIN 2更新价格 查询 AST2

ON T1.型号=T2.型号)Q1

,

(SELECT 产品,子件,替代(No),MAX(更新单价) as 最大 from

1明细表 查询,2更新价格 查询

WHERE 1明细表 查询.型号=2更新价格 查询.型号

group by 产品,子件,替代(No))Q2

where Q1.产品=Q2.产品 AND Q1.子件=Q2.子件 AND T1.替代(No)=Q2.替代(No) AND Q1.更新单价=Q2.最大

group by Q1.产品,Q1.子件,Q1.替代(No),Q2.最大)P2

ON P1.型号=P2.新型号)

RIGHT JOIN 1明细表 查询 P3

ON P1.型号=P3.型号


Database H.zip (42.37 KB, 下载次数: 50)



TA的精华主题

TA的得分主题

发表于 2014-12-9 21:57 | 显示全部楼层
  1. SELECT P3.*,P1.更新单价,P2.最大 FROM ([2更新价格 查询]P1
  2. LEFT JOIN
  3. (SELECT 最大,FIRST(Q1.型号) AS 新型号 FROM
  4. (SELECT T1.*,T2.更新单价 FROM [1明细表 查询] T1
  5. LEFT JOIN [2更新价格 查询]T2
  6. ON T1.型号=T2.型号)Q1
  7. ,
  8. (SELECT 产品,子件,[替代(No)],MAX(更新单价) as 最大 from
  9. [1明细表 查询],[2更新价格 查询]
  10. WHERE [1明细表 查询].型号=[2更新价格 查询].型号
  11. group by 产品,子件,[替代(No)])Q2
  12. where Q1.产品=Q2.产品 AND Q1.子件=Q2.子件 AND T1.[替代(No)]=Q2.[替代(No)] AND Q1.更新单价=Q2.最大
  13. group by Q1.产品,Q1.子件,Q1.[替代(No)],Q2.最大)P2
  14. ON P1.型号=P2.新型号)
  15. RIGHT JOIN [1明细表 查询] P3
  16. ON P1.型号=P3.型号
复制代码

字段名称或表名称包含保留字符或特殊符号,必须使用“[]”括住,特殊符号包括空格、运算符号、#、$等其他符号、以数值开头等,保留字符可以自行对照access帮助,有些时候,保留字符没有使用“[ ]”括注也可以运行,但是,等到出错时再进行查找原因就困难了,故建议养成良好的书写习惯。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-26 11:58 , Processed in 0.034404 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表