0

我的数据库中有以下行。

            profileID |     startDate     |   endDate
   -------------------|-------------------|--------------
    Jr.software eng.  |2012-07-01         |2030-01-01
    ..................|...................|..............
     Eng              |2013-03-28         |2013-03-28
    ..................|...................|..............
     Sr.eng           |2013-04-09         |2013-04-17
    ..................|...................|..............
     CEO              |2012-11-21         |
    ..................|...................|..............

上面的行存储在我的数据库中。我想得到这样的结果。

1. If endDate is null then I get only it related startDate.

就像上面一行我的预期结果是

        profileID  |     startDate     |   endDate
   -------------------|-------------------|--------------
     CEO              |2012-11-21         |
    ..................|...................|..............
  1. 如果没有空 endDate 那么我想从 endDate 列表中获取最大的 endDate。

但是如果行是这样的那么

           profileID  |     startDate     |   endDate
   -------------------|-------------------|--------------
    Jr.software eng.  |2012-07-01         |2030-01-01
    ..................|...................|..............
     Eng              |2013-03-28         |2013-03-28
    ..................|...................|..............
     Sr.eng           |2013-04-09         |2013-04-17

那么我的预期结果是

           profileID  |     startDate     |   endDate
   -------------------|-------------------|--------------
    Jr.software eng.  |2012-07-01         |2030-01-01
    ..................|...................|..............

我需要一个mysql查询。

4

3 回答 3

1
Select profileId, Case When endate is NULL then startDate 
       Else Max(EndDate) end  As `Date`
From tablename
于 2013-04-23T10:00:14.270 回答
0
SELECT
    l.profileID,
    IF(l.endDate IS NULL,l.startDate,MAX(endDate)) AS Date
FROM mytable AS l
于 2013-04-23T09:59:32.900 回答
0

我猜你正在寻找类似的东西:

 SELECT profileID,startDate,MAX(endDate) AS endDate
 FROM table1 
 group by profileID

在这里演示

于 2013-04-23T10:36:58.307 回答