【问题标题】:SQL SELECT Only the column with max date [duplicate]SQL SELECT仅具有最大日期的列[重复]
【发布时间】:2017-12-29 16:09:11
【问题描述】:

我有一个包含以下数据的表格

villageId    ChildID   VC1_date   VC2_date   VC3_date   VC4_date   VC5_date
----------------------------------------------------------------------------
1             1         2/2/2015   2/4/2017   2/8/2013   2/2/2013   2/8/2011
1             2         2/3/2017   2/6/2013   2/3/2015   2/5/2014   2/4/2012
1             3         2/5/2013   2/8/2011   2/1/2017   2/8/2016   2/2/2011
2             1         2/6/2011   2/2/2014   2/2/2012   2/9/2018   2/6/2014
2             2         2/2/2013   2/4/2017   2/7/2011   2/4/2012   2/8/2016
2             3         2/1/2015   2/7/2018   2/9/2014   2/5/2011   2/1/2011

现在我想选择村庄的最大日期

VC 是 Vaccine 的缩写形式

我想要的输出是(村庄的最后接种日期)

VillageId      Date
--------------------
1              2/4/2017
2              2/9/2018

希望你明白我想要什么...

【问题讨论】:

  • 是的,子表(上表)中可能存在重复。但我需要不同的价值观
  • 你真的试过this solution??。这是@Sowndarya 和 fen1x 提供的相同链接。这将使您获得Distinct 值本身。试一次

标签: sql sql-server


【解决方案1】:

我会这样做:

declare @vaccines table  
(villageId int,   
ChildID int,
VC1_date date,  
VC2_date date,  
VC3_date date,  
VC4_date date,  
VC5_date date)

INSERT INTO @vaccines VALUES(1, 1, '2015-02-02', '2017-04-02', '2013-08-02', '2013-02-02', '2011-08-02')
INSERT INTO @vaccines VALUES(1, 2, '2017-03-02', '2013-06-02', '2015-03-02', '2014-05-02', '2012-04-02')
INSERT INTO @vaccines VALUES(1, 3, '2013-05-02', '2011-08-02', '2017-01-02', '2016-08-02', '2011-02-02')
INSERT INTO @vaccines VALUES(2, 1, '2011-06-02', '2014-02-02', '2012-02-02', '2018-09-02', '2014-06-02')
INSERT INTO @vaccines VALUES(2, 2, '2013-02-02', '2017-04-02', '2011-07-02', '2012-04-02', '2016-08-02')
INSERT INTO @vaccines VALUES(2, 3, '2015-01-02', '2018-07-02', '2014-09-02', '2011-05-02', '2011-01-02')

SELECT villageId, MAX(vcdate) FROM
(SELECT villageId, ChildID, VC1_date as vcdate from @vaccines 
UNION
SELECT villageId, ChildID, VC2_date as vcdate from @vaccines 
UNION
SELECT villageId, ChildID, VC3_date as vcdate from @vaccines 
UNION
SELECT villageId, ChildID, VC4_date as vcdate from @vaccines 
UNION
SELECT villageId, ChildID, VC5_date as vcdate from @vaccines) g
GROUP BY villageId 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-06
    相关资源
    最近更新 更多