2014-01-29 13 views
0

我正在编写一个脚本来从两个不同的表中抽取Group By和MAX(Cre​​atedOnDate),但只返回table1的MAX(Cre​​atedOnDate)大于表2的MAX(Cre​​atedOnDate)的位置。交叉分组和最大日期脚本

例如;

select MasterId, max(createdon) --Master id + latest product generated date 
from product 
group by MasterId 

select contactId, max(createdon) --Contact id + latest edit date for that contact 
from contactEdit 
group by contactId 

    from contactEdit ce 
join contactmaster cm 
    on ce.contactId = cm.contactid 
join product p 
    on p.MasterId = cm.MasterId 

在这两个表之间有一个contactMaster表,其联接也在上面。我想查找自从创建与该联系人有关的上一个产品以来进行编辑的所有联系人的列表。

有点像;

where max(ce.createdon) > max(p.createdon) 

回答

1

我不太清楚你的表格是什么样的,你到底想要达到什么目的,所以这是一个猜测。

你想要做的是组子选择的表,然后比较maxdates:

with ce as (
    select MasterId, max(createdon) maxco --Master id + latest product generated date 
    from product 
    group by MasterId 
) 
, prod as (
    select contactId, max(createdon) maxco --Contact id + latest edit date for that contact 
    from contactEdit 
    group by contactId 
) 
, cm as (
    select contactId, masterId, max(createdon) maxco --Master id + latest product generated date 
    from contactmaster 
    group by contactId, masterId 
) 
select contactId 
    from ce 
join cm 
    on ce.contactId = cm.contactid 
join product p 
    on p.MasterId = cm.MasterId 
where ce.maxco > prod.maxco