請注意,我是一個完整的SQL noob並正在學習過程中。基於Google的搜索(包括在這裏搜索),我試過使用SELECT DISTINCT和GROUP BY,但都不起作用,可能是由於我的所有聯接(如果有人知道他們爲什麼不能完全工作,這將有助於學習)。SQL:需要刪除包含多個連接的查詢中的重複行
我需要來自各種表格和下面的數據是我知道這樣做的唯一方法(我只知道基礎知識)。下面的查詢工作正常,但顯示重複。我需要知道如何刪除這些。我現在唯一的提示可能是一個嵌套的SELECT查詢,但基於研究,我不知道如何實現它們。任何幫助都會很好,謝謝!
USE SQL_Contest
go
SELECT
CLT.Description AS ClockType,
CLK.SerialNumber AS JobClockSerial,
SIT.SiteNumber AS JobID,
SIT.[Name] AS JobsiteName,
SIT.Status AS SiteActivityStatus,
DHA.IssuedDate AS DHAIssuedDate, -- Date the clock was assigned to THAT jobsite
CLK.CreatedDate AS CLKCreatedDate, -- Date clock first was assigned to ANY jobsite
SES.ClockVoltage
FROM tb_Clock CLK
INNER JOIN tb_ClockType CLT
ON CLK.TypeID = CLT.ClockTypeID
INNER JOIN tb_DeviceHolderActivity DHA
ON CLK.ClockGUID = DHA.DeviceGUID
INNER JOIN tb_Site SIT
ON SIT.SiteGUID = DHA.HolderGUID
LEFT JOIN tb_Session SES
ON SES.ClockSerialNumber = CLK.SerialNumber
WHERE DHA.ReturnedDate IS NULL
ORDER BY SIT.[Name] ASC
編輯:我會很快回顧這些答案,非常感謝。我張貼額外的重複信息每羅布的要求:
一切顯示正常,直到我補充一下:
LEFT JOIN tb_Session SES
ON SES.ClockSerialNumber = CLK.SerialNumber
,我需要。這是複製出現時:
JobClock 2,500248E4,08-107,Brentwood Job,1,2007-05-04 13:36:54.000,2007-05-04 13:47:55.407,3049
JobClock 2,500248E4,08-107,Brentwood Job,1,2007-05-04 13:36:54.000,2007-05-04 13:47:55.407,3049
我想要該信息只顯示一次。基本上這個查詢是確定所有活動的工作現場有一個時鐘分配給他們,該作業只有一個時鐘分配給它,它只是一個工作現場,但它出現兩次。
編輯2:基於你們提供的幫助,我能夠確定他們實際上不是重複的,每個會話都是獨立的,這是唯一碰巧有兩個會話的人。所以現在我要試着弄清楚如何只從最新的會議中獲取信息。
一些重複的行輸出的一個例子有幫助,所以我們可以看到*被複制的內容。答案几乎肯定涉及您未顯示的每個重複行中包含不同值的列之一。 – Rob 2010-08-26 18:00:59
我添加了應該有用的信息,謝謝Rob! – ShadowXOR 2010-08-26 19:04:52
重複中是否有拼寫錯誤,因爲'DISTINCT'會將其刪除。作爲左邊加入「ses」,我曾預計ses.clockvoltage顯示每行不同的值。否則,這意味着你有多個「ses」記錄相關,並且需要檢查你需要加入的「ses」以便在可能的情況下襬脫重複。 – 2010-08-26 20:10:24