0

我有2张桌子如下。

项目表。

ID      ProjectID      description      etc. 
1       4849           aaabbbb          etc. 

发票表。

ID      ProjectID      InvoiceNo      InvoiceDate      amount
1       4898           1234           01.01.01         200
2       4898           5678           02.02.02         475

我需要的是以下内容。

ProjectID      Description      Invoicedate      amount
4898           aaabbbb          02.02.02         675

我想我想多了,但需要帮助。

4

4 回答 4

2

使用带总和的分组:

SELECT i.projectId, description, MAX(invoiceDate), SUM(amount)
   FROM invoice i
   JOIN project p ON p.projectId = i.projectId
   GROUP BY i.projectId;

我选择使用max来获取每个项目的最新发票日期。假设那是你想要的。

于 2013-02-14T20:38:00.977 回答
1

尝试这样的事情:

SELECT Project.ProjectID, Description, MAX(InvoiceDate), SUM(Amount)
FROM Project JOIN Invoice ON Project.ProjectID = Invoice.ProjectID
GROUP BY Project.ProjectID, Description

如果您的 InvoiceDate 不是实际的DATETIME,则需要对其进行转换才能使其正常工作或使用另一种方式来获取 max of InvoiceDate.

SQL Fiddle在这里。请注意,我更改了 Invoice 表中的 ProjectID 以匹配 Invoice 表中的 ProjectID。

于 2013-02-14T20:38:59.017 回答
0

我不完全确定你想如何进行分组,但它可能类似于

SELECT project.ProjectID, project.description, MAX(invoice.InvoiceDate), SUM(invoice.amount) FROM project JOIN invoice ON project.ProjectID = invoice.ProjectID WHERE project.ProjectID = 4898 GROUP BY project.ProjectID
于 2013-02-14T20:40:40.367 回答
0
select
  *,
  sum(amount) as amount
from
  Project as p
  inner join Invoice as i
    on p.ProjectID = i.ProjectID
group by ProjectID

发票日期可能会有所不同。

于 2013-02-14T20:37:55.350 回答