将两个结果合并为一行

时间:2014-07-07 14:41:24

标签: sql-server

EmpID名称日期赚取

1 A 7/1/2014 2

1 A 7/1/2014 4

1 A 7/2/2014 1

1 A 7/2/2014 2

2 B 7/1/2014 5

2 B 7/2/2014 5

我想将两个结果组合在一行中,如下所示。我的声明有,但我想找到获得Total_Earn的解决方案?感谢

" SELECT EmpID,Name,Date,Sum(earn)FROM employee WHERE DateFrom和DateTo之间的日期 GROUP BY EmpID,名称,日期"

EmpID名称日期获得Total_Earn

1 A 7/2/2014 3 9

2 B 7/2/2014 5 10

2 个答案:

答案 0 :(得分:1)

看起来您想要每个员工的最大日期和收入总和。假设您想为每个ID / Name创建一条记录,您可以这样做:

select EmpID, Name, Max(Date), Sum(Earn) 
from YourTableName
group by EmpID, Name

答案 1 :(得分:0)

试试这个。将日期替换为您想要的任何值。

SELECT table1.EmpID, table1.Name, table1.Date, table1.Earn, table2.Total_Earn

FROM
    (SELECT EmpID, Name, Date, Earn
    FROM yourtablename    
    WHERE Date = "2014-07-02"
    GROUP BY EmpID) table1
LEFT JOIN 
    (SELECT EmpID, SUM(Earn)
    FROM yourtablename
    WHERE Date <= "2014-07-02"
    GROUP BY EmpID) table2
ON table1.EmpID = table2.EmpID

这将执行两个SELECT并加入他们的结果。第一个选择(定义为table1)可以很好地选择指定日期的员工ID和收入。

第二个陈述(定义为表2)将选择员工的总收入(包括该日期)。

然后根据员工ID将这两个语句连接在一起。