2014-11-05 17 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

相關問題