2014-11-05 48 views
0

我有一个修订表,并且我想写一个sqlserver查询来为每个message_id选择一个revision_id大于当前活动修订版本的revision_id(由is_active字段标记)的行。如何才能选择revision_id超出当前活动修订版本的行?

该查询选择修订表中的所有行,但我想修改它以仅选择每个消息的当前修订版之外的修订版。

select 
    mr.revision_id, 
    mr.message_id, 
    mr.group_id, 
    mr.width, 
    mr.height, 
    convert(varchar(10), mr.expiration_date,101), 
    mr.resource_type, 
    mr.created_date, 
    mr.CreatedBy, 
    (select ma.is_approved from message_approval as ma where message_revision_id = mr.revision_id), 
    mr.RevisedBy, 
    mr.revised_date, 
    mr.is_active 
from message_revision as mr 
+0

请提供数据和输出例如 – 2014-11-05 16:07:07

回答

1

试试这个:

SELECT mr2.* 
FROM message_revision as mr1, message_revision as mr2 
WHERE mr1.message_id = mr2.message_id 
AND mr1.is_active = true 
AND m2.revision_id > mr1.revision_id 
+0

完美! 轻微的修改虽然:SELECT * MR2 FROM 作为message_revision MR1,message_revision如MR2 WHERE mr1.message_id = mr2.message_id AND mr1.is_active = 1 AND mr2.revision_id> mr1.revision_id。 – 2014-11-05 16:14:08

相关问题