SQL - 从表中选择多个日期以获取唯一ID - 第2部分

时间:2018-04-10 18:37:33

标签: sql sql-server

戈登让我对前一个问题非常直接,现在我已经学到了很多东西:)。我的查询现在看起来像这样:

select ident, min(input_date) as 'date requested',
     min(case when op='u' and user IN (lists tech's names)) as 'date assigned'
     max(case when status='closed' then date end) as 'date completed'
     max(case when op='u' then user end) as 'tech'
from table

所以这给了我所有我想要的东西,除了那些被标记为' tech'的专栏。对于大多数结果,我得到了正确的结果,但对于少数,它给了我错误的技术或用户'

enter image description here

所以我添加了一个字段,以便您可以更好地理解 - 它的字段称为“角色”#。当我运行此查询时,我从不希望列为“用户”的人员#39;在角色列中列为' tech'。在上面的查询中,它列出了用户而不是技术,并且总是在用户更新其请求的情况下。所以,如果你看一下这张桌子,在身份1中,汤姆是用户,而哈里是技术。哈里在2/2分配给自己;然而,在哈里分配之后,汤姆更新了请求(以提供更多信息)。运行上述查询,将导致tom被列为技术领域的技术人员。我的猜测是最大的b / c,汤姆按字母顺序排在哈里。

所以我有5个技术要跟踪(表中只有2个 - bertha& harry)。如果我添加一个IN子句,使其如下所示:     max(op =' u'以及用户IN(' bertha',' harry'等)然后用户结束时的情况)' tech&#39 ;

结果是它总是按字母顺序给我最后一项技术而不是分配它/关闭它的人。

我的目标是让技术人员分配&关闭它以列出。如果请求尚未分配,那么“技术”将会被分配。字段应读为null。

日期字段都有时间戳,所以我可以这样做,我想我也可以定位他们的角色。

我知道max可能是问题,因为技术人员可以分配它然后用户可以更新但是如果我把IN语句放在那里我不明白为什么它列出了一个与之无关的技术w /那个身份。

最后,在另一个场景中,在身份2中,伯莎实际上将任务从哈利带走,所以我需要说bertha;然而,哈里将永远是现场报道的 - 可能是由于max()

感谢

0 个答案:

没有答案