代码之家  ›  专栏  ›  技术社区  ›  Rod

一些tsql的帮助很小

  •  4
  • Rod  · 技术社区  · 15 年前

    下表所示:

    rowId  AccountId  Organization1  Organization2
    -----------------------------------------------
    1      1          20             10
    2      1          10             20
    3      1          40             30
    4      2          15             10
    5      2          20             15
    6      2          10             20
    

    例如,在上面的给定数据中,我的结果将是一条记录,该记录将是AccountId 1,因为row3 organization2值30不存在于该特定帐户的organization1中。

    5 回复  |  直到 15 年前
        1
  •  6
  •   Andrew    15 年前
    SELECT rowId, AccountId, Organization1, Organization2
    FROM   yourTable yt
    WHERE  NOT EXISTS (SELECT 1 FROM yourTable yt2 WHERE yt.AccountId = yt2.AccountId AND yt.Organization1 = yt2.Organization2)
    
        2
  •  3
  •   Larry Lustig    15 年前

    SELECT AccountID FROM Table WHERE Organization1 <> Organization2
    

    但我怀疑你是在问更难的解释(其中Organization2不出现在同一帐户的Organization1值中):

    SELECT AccountID From Table T1 WHERE Organization2 NOT IN 
      (SELECT Organization1 FROM Table T2 WHERE T2.AccountID = T1.AccountID)
    
        3
  •  1
  •   Zephyr was a Friend of Mine    15 年前

    下面是一个你可以做到的方法:

    CREATE TABLE #T(rowid int, acc int, org1 int, org2 int)
    
    INSERT #T
    SELECT 1,1,10,10  UNION
    SELECT 2,1,20,20   UNION
    SELECT 3,1,40,30   UNION
    SELECT 4,2,10,10   UNION
    SELECT 5,2,15,15   UNION
    SELECT 6,2,20,20
    

    然后执行自联接以发现缺少的org2:

    SELECT
    *
    FROM #T T1
    LEFT JOIN
        #T T2
     ON t1.org1 = t2.org2
    AND t1.acc = t2.acc
    
    WHERE t2.org1 IS NULL
    
        4
  •  0
  •   John Gietzen    15 年前
    SELECT
        *
    FROM
        [YorTable]
    WHERE
        [Organization1] <> [Organization2]  -- The '<>' is read "Does Not Equal".
    
        5
  •  0
  •   Damian Leszczyński - Vash    15 年前

    使用Noel Abrahams提出的左连接。