【发布时间】:2018-12-13 21:16:32
【问题描述】:
我在尝试让 1 个字段返回一组字段中的 1 个时遇到问题 例子: 这就是我能得到的(在 [Job Name] 和 [Door Style] 列之间使用 Inner Join,这两组数据本来就存在于不同的表中)
-[Job Name], [Door Style]
-Job1 Door Style1
-Job1 Door Style2
-Job2 Door Style3
-Job2 Door Style4
我想要的是,
[Job Name], [Door Style]
Job1 Door Style1
Job2 Door Style3
我已经尝试了多种不同的方法来实现这一点,我当前的方法正在尝试在下面复制它,因为交叉应用似乎不适用于我正在使用的东西。 (某种形式的 Access 中的 SQL?软件是 Cabinet Vision)
如果我没记错的话(目前不在装有软件的电脑前,它会向我抛出一个错误,例如“您尝试执行不包含指定聚合函数的查询”
表 JobS,包括 Job 和 Doors 之间的 Inner Join,并生成这样的数据
[Job Name], [Door Style]
Job1 Door Style1
Job1 Door Style2
Job2 Door Style3
Job2 Door Style4
任何关于替代方法的输入或我可能在下面遗漏的内容将不胜感激。 谢谢!
SELECT JobS.[Job Name], JobS.[Door Name]
from JobS as JobS
inner join (
select JobS1.JobS.[Job Name], max(JobS1.JobS.[Door Name]) as OneDoor
from JobS as JobS1
group by JobS1.[Job Name]) as Q1
on Q1.[Job Name] = JobS.[Job Name] and Q1.OneDoor = JobS.[Door Name]
【问题讨论】:
-
您的子查询选择
jobs1.jobs.fieldname,而它应该选择jobs1.fieldname...话虽如此,您的子查询不会自己产生您需要的全部结果吗? -
如果这是 SQL Server,请将 SQL Server 标签放在您的问题上。 SQL 只是许多 dbms 供应商使用的一种语言。
-
@Eric -- 我相信这是用于 ms 访问(尽管被错误标记)...
-
在我看来您想要 Min() 门样式,除非数据不是字面上的
Door Style1。如果这不是您的数据,请编辑问题以显示代表性数据。同意@sgeddes。 -
@SGeddes,您的更改确实使这项工作奏效了,太好了,谢谢。这可能是也可能不是某种形式的 SQL Server,我不知道。这是在软件 Cabinet Vision 中完成的,该软件确实为其数据库使用了一些 Access 文件。目前,该更改确实使它起作用,我没有处理大量信息,因此代码的效率对我来说不是问题,当我有空闲时间时,我会尝试更简洁的方法。谢谢大家
标签: sql ms-access aggregate-functions