0

以下の TeamRecords = 1 を = 別の数値に変更すると、私が変更した量の行が見つかります。新しいインシデントが作成されると、一意の番号が付けられ、Task テーブルから新しい割り当てが追加されるたびに、IncidentNumber の別の行が追加されるため、以下の seq = 1 で削除したインシデント番号の行が重複する可能性があります。 . 新しい割り当てが作成されると、Task テーブルに新しい CreateddateTime が作成されるため、たとえば、Max(t.[CreatedDateTime] を実行して任意の IncidentNumber の最後の割り当てを見つけることができます。したがって、TeamRecords = 1 を見つける必要があります。そのチームの割り当てが 1 つしかない特定のチームのすべてのレコード。

それは何か役に立ちますか?これが私がこれまでに持っているものです...

Use TEST
Go

  WITH RankResult AS
(   
SELECT  i.[IncidentNumber],
        i.[CreatedDateTime],
        i.[ResolutionDateAndTime],
        i.[Priority],
        i.[Status],
        i.[ClientName],
        i.[ClientSite],
        t.[OwnerTeam],
        t.[Owner],
            row_number() over( partition by i.RecID 
                        order by t.CreatedDateTime desc, t.OwnerTeam ) seq,
        TeamRecords = COUNT(*) OVER(PARTITION BY t.ParentLink_RecID)
FROM    Incident as i
        Inner JOIN Task as t
            ON i.RecID = t.ParentLink_RecID
WHERE   t.OwnerTeam = 'Infrastructure Services'
AND     i.CreatedDateTime >= '20121001'
AND     i.CreatedDateTime <= '20131001'

)
SELECT  DISTINCT
    [IncidentNumber],
    [CreatedDateTime],
    [ResolutionDateAndTime],
    [Priority],
    [Status],
    [ClientName],
    [ClientSite],
    [OwnerTeam],
    [Owner]
FROM    RankResult
Where   TeamRecords = 1
And Seq = 1
Order By IncidentNumber Asc
GO
4

2 に答える 2

0

関連する列全体をグループ化し、それらをカウントし、カウントが 1 の場合にフィルターをかけ、それをメイン テーブルに結合して適切な行を選択する単純なサブクエリをいつでも使用できます。

SELECT      Incident.*
FROM        (
                SELECT      OwnerTeam
                FROM        Incident AS Inc1
                GROUP BY    OwnerTeam
                HAVING      COUNT( * ) = 1
            )   AS Team 
        ,   Incident
WHERE       Incident.OwnerTeam = Team.OwnerTeam

(ただし、これ以上の情報がなければ、これがうまくいくかどうかはわかりません。)

于 2013-10-21T14:00:42.310 に答える