2013-02-14 107 views
0

我有2个表格,如下所示。SQL SELECT语句多行

项目表。

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 

我想我已经在想它但需要帮助。

+0

大多数表有多行。所以你的标题是不是真的提供信息 – 2013-02-14 20:42:42

+0

你在这个例子中的ProjectID不相等。 – zimdanen 2013-02-14 21:02:35

+0

对不起,他们都是ment也都显示4898 – Hypocraties 2013-02-14 21:21:48

回答

0
select 
    *, 
    sum(amount) as amount 
from 
    Project as p 
    inner join Invoice as i 
    on p.ProjectID = i.ProjectID 
group by ProjectID 

发票日期可能有所不同。

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获得每个项目的最新发票日期。假设这是你想要的。

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,你需要将其转换为这个工作,或者使用获得的最大InvoiceDate的另一种方式。

SQL小提琴here。请注意,我更改了Invoice表中的ProjectID以匹配您的Invoice表中的ProjectID。

+0

当我做最大invoicedate它只是返回#Name并返回两行仍然 – Hypocraties 2013-02-14 20:46:49

+0

对不起忘记提及invoicedate是datetime – Hypocraties 2013-02-14 20:49:10

+0

'MAX(InvoiceDate)'的值是'#名称?你确定'InvoiceDate'是'DATETIME'吗?另外,你可以发布确切的查询和结果吗? – zimdanen 2013-02-14 20:56:23

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