簡體   English   中英

在不使用 ROW_NUMBER() 的情況下獲取 SQL 服務器中的每隔一行:或者……我的 row_number() 怎么錯了?

[英]Get every other row in SQL Server without using ROW_NUMBER(): Or… How is my row_number() wrong?

我的公司使用GoldMine CRM (在SQL服務器上),我正在編寫查詢以查找重復記錄。 查詢很棒,但它為每個重復返回兩行,我只需要一個。 但是,我似乎根本無法使用Row_Number() - 它總是返回一個空白列。 這是我的查詢:

SELECT *
FROM (
SELECT 
       c11.company AS Company1,
       c12.company AS Company2,
       c11.phone1 AS DuplicatePhone,
       c11.address1 AS C1Address1,
       c12.address1 AS C2Address1,
       c11.zip AS Zip1,
       c12.zip AS Zip2,
       c11.contact AS Contact_1,
       c12.contact AS Contact_2,
       SUBSTRING(c11.company, 1, CHARINDEX(' ', c11.company)) AS C1_Firstword,
       SUBSTRING(c12.company, 1, CHARINDEX(' ', c12.company)) AS C2_Firstword,
       c11.accountno AS Acctno1,
       c12.accountno AS Acctno2
FROM db.contact1 AS c11
INNER JOIN db.contact1 AS c12
ON c11.phone1 = c12.phone1 
WHERE c11.state = 'MA'
AND c12.state = 'MA'
AND c11.phone1 IS NOT NULL
AND c11.phone1 <> ''
AND c11.accountno <> c12.accountno) AS foo

WHERE (PATINDEX('%' + foo.C1_Firstword + '%', foo.company2) > 0
OR PATINDEX('%' + foo.C2_Firstword + '%', foo.company1) > 0)
ORDER BY foo.DuplicatePhone

該查詢首先查找具有相同電話號碼的記錄,然后查找公司名稱中的相似之處(有時我們的聯系人共享一個電話號碼而不會重復,但通常會找到一個名稱為“John Smith Enterprises”且其他“史密斯企業”)

我已經在這個查詢和一個更簡單的查詢中嘗試了 ROW_NUMBER() 的每次迭代,例如:

SELECT c1.accountno, c1.company, ROW_NUMBER() OVER(ORDER BY c1.Accountno ASC) row_num
FROM bpmain1.dbo.contact1 c1
WHERE c1.state = 'MA'

...而且我總是得到一個空白列。 我的理論是GoldMine中的SQL面板阻止我使用它,因為我從GoldMine返回的結果總是包含一個編號為“Row”的列(好像GoldMine “方便地”用空ROW_NUMBER()條款。)

因此,對於每個重復的實例,我最終會得到兩行,而我只需要一個 - 哪一個都沒有關系。 使用ROW_NUMBER()的目的是讓我得到其他所有結果。 還有其他想法嗎?

只需更改您的where條件:

FROM db.contact1 c11 INNER JOIN
     db.contact1 c12
     ON c11.phone1 = c12.phone1 AND c11.state = c12.state
WHERE c11.state = 'MA' AND
      c11.phone1 <> '' AND
      c11.accountno < c12.accountno
--------------------^ this is the key change

也就是說,您不需要刪除重復項。 只是不要首先通過按帳戶順序返回聯系人來生成它們。

請注意,條件c11.phone1 IS NOT NULL是多余的。 JOIN條件和<> ''都過濾掉NULL值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM