我有一个消息表,其中包含来自工作组id和工作组id的消息、线程。当from_wg_id为null时,我知道消息来自学生。当它不是null时,我知道消息是来自工作组中的雇员的消息。当to_wg_id为null时,我知道消息是对学生的回复,而当from_wg_id不是null,to_wg_id不是null时,我知道消息是从一个雇员到另一个雇员的转发。这是我面临的挑战:我希望看到每个线程中的所有工作组(为了简单起见,这里只显示一个工作组: 19407),其中既包括,也包括对学生的答复,以及向其他员工转发的。我该怎么做?我试过了group,但是我一直在输出CESADM,因为只有一个回复,所以我不想显示这一点。
资料来源: Message_log
Message_ID  Thread_ID   FROM_WG_ID  TO_WG_ID
1           19407       CESADM      NULL
2           19407       NULL        SCHOLAR     
3           19407       NULL        SCHOLAR     
4           19407       SCHOLAR     NULL
5           19407       SCHOLAR     CESADM期望输出表: Message_log
Thread_ID   FROM_WG_ID      
19407       SCHOLAR         如何编写将生成所需输出表的查询?(输出此结果的原因是that是线程19407中唯一具有转发的和(应答消息)的工作组)
发布于 2014-06-19 14:07:04
您可以使用EXISTS查看是否找到向其他员工转发的a:
SELECT 
    Thread_ID,
    TO_WG_ID 
FROM Messages M1
WHERE FROM_WG_ID IS NULL
AND EXISTS(
   SELECT NULL FROM Messages M2
   WHERE M2.Thread_ID = M1.Thread_ID
     AND M2.FROM_WG_ID = M1.TO_WG_ID  
     AND TO_WG_ID IS NOT NULL)https://stackoverflow.com/questions/24297001
复制相似问题