【问题标题】:Kinda complex inner join and sum query有点复杂的内部连接和求和查询
【发布时间】:2013-01-01 02:27:38
【问题描述】:

我遇到了一个问题,如果你们能帮助我,我将不胜感激。

我们正在使用一个表 (MS Access) 来存储多个公司的项目计划,如下所示:

ID    PROJECT_NAME   COMPANY_NAME   MILESTONE_NAME   MILESTONE_TYPE

我的查询目标是返回“适用”推出的计数。

推出是项目和公司的独特组合。示例:

Project 1 being executed in the Company A
Project 2 being executed in the Company A
Project 1 being executed in the Company B

适用的项目是其最后一个里程碑具有不同于“DUMMY”的 MILESTONE_TYPE 的任何项目。

适用的推出应如下所示:

ID    PROJECT_NAME   COMPANY_NAME   MILESTONE_NAME           MILESTONE_TYPE
1     Project 3      Company D      6.2 Rollout Completed    Applicable

为了检索项目的最后一个里程碑,我使用以下 SQL:

SELECT Sheet1.[PROJECT_NAME], MAX(Sheet1.[MILESTONE_NAME])
FROM Sheet1
    INNER JOIN Sheet1 AS Sheet1_1 ON (Sheet1.[PROJECT_NAME] = Sheet1_1.[PROJECT_NAME])
        AND (Sheet1.[MILESTONE_NAME] = Sheet1_1.[MILESTONE_NAME])
GROUP BY Sheet1.[PROJECT_NAME]
ORDER BY Sheet1.[PROJECT_NAME]

我需要您的支持的查询的预期结果是:

PROJECT_NAME  COUNT_OF_APPLICABLE_ROLLOUTS
Project A     5
Project B     6

但是我完全不知道如何开始...... 有谁知道如何在 SQL 查询中输入所有内容?

提前致谢。

【问题讨论】:

  • 举个例子,你想要的结果是什么?
  • 你用的是什么数据库?

标签: sql ms-access count inner-join


【解决方案1】:

假设更大的“id”意味着后面,下面的查询返回关于最新的非虚拟行的信息:

select p.*
from Sheet1.p join
     (select project_name, company_name, max(id) as maxid
      from Sheet1
      where Milestone_Name <> 'Dummy'
      group by project_name, company_name
     ) pc
     on p.project_name, pc.company_name

(注意:我没有对此进行测试,因此可能存在语法错误。)

【讨论】:

  • 谢谢戈登,但是它不起作用。 ID 不是确定推出中最新里程碑的字段。因此我不得不编写 SQL 查询来检索它们。
【解决方案2】:

你可以试试这个:

    SELECT  myTable.*
FROM    (
        SELECT  DISTINCT COMPANY_NAME
        FROM    Sheet1
        ) CN
CROSS APPLY
        (
        SELECT  TOP 1 *
        FROM    Sheet1 myTable2
        WHERE   myTable2.COMPANY_NAME = CN.COMPANY_NAME
        ORDER BY
                MILESTONE_NAME DESC
        ) myTable

【讨论】:

  • 谢谢,但它不起作用!与 MS Access 一起使用时,交叉应用似乎会产生错误
猜你喜欢
  • 2019-06-20
  • 2012-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多