选择最大日期到当前日期的行以及大于今天的所有行日期

时间:2015-11-18 09:42:43

标签: sql sql-server date

假设我有桌子

table :: tbl_group_txn

GroupName   Indvd_id    effective_date                  amount
--------------------------------------------------------------
JPN001      001         2015-11-13 00:00:00.000         70,000
JPN001      002         2015-11-13 00:00:00.000         80,000

JPN001      003         2015-11-16 00:00:00.000         90,000
JPN001      004         2015-11-16 00:00:00.000         75,000

JPN001      005         2015-11-29 00:00:00.000         100,000
JPN001      006         2015-11-29 00:00:00.000         125,000

CHN001      007         2015-11-29 00:00:00.000         60,000
CHN001      008         2015-11-15 00:00:00.000         70,000
CHN001      009         2015-11-15 00:00:00.000         70,000
CHN001      010         2015-11-18 00:00:00.000         40,000
--------------------------------------------------------------

我的要求是使用 MAX(effective_date)行获取日期到今天的日期和所有大于今天日期的行。< / p>

如果组 JPN001 ,则rowid 3,4的最大日期到今天的日期,而rowid 5,6的日期大于今天的日期。

类似于 CHN001 组,rowid 10的最大日期为今天日期,而rowid 7的日期大于今天的日期。

所以输出将是::

GroupName   Indvd_id    effective_date                  amount
--------------------------------------------------------------      
JPN001      003         2015-11-16 00:00:00.000         90,000
JPN001      004         2015-11-16 00:00:00.000         75,000

JPN001      005         2015-11-29 00:00:00.000         100,000
JPN001      006         2015-11-29 00:00:00.000         125,000

CHN001      007         2015-11-29 00:00:00.000         60,000
CHN001      010         2015-11-18 00:00:00.000         40,000
--------------------------------------------------------------

请建议我如何实现这一目标?

2 个答案:

答案 0 :(得分:1)

在查询的第一部分中,我得到的有效行数等于MAX_idate的所有行直到今天(具有固定的组名)并且使用OR条件,我得到所有行的有效_date&gt;今天的日期

试试这个:

SELECT T.*
FROM mytable T
WHERE T.effective_date =
    (SELECT MAX(T2.effective_date)
    FROM mytable T2
    WHERE T2.groupname = T.groupname
    AND T2.effective_date <= GETDATE())
OR T.effective_date > GETDATE()

继续SqlFiddle

答案 1 :(得分:0)

InputStream inputStream = ContactsContract.Contacts.openContactPhotoInputStream(getApplicationContext().getContentResolver(),
ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, new Long(idValue)), true);