簡體   English   中英

從查詢中刪除重復項

[英]Removing duplicates from query

我在下面的查詢中獲取設備全天運行的百分比時間,但是由於數據中存在重復項,因此我無法輕易擺脫,這是最好的方法?

我試過使用distinct和Max(dtReading)

    SELECT DISTINCT
  workStationNo,
  controllerID,

  CAST(DATEPART(DAY, DATEADD(DAY, DATEDIFF(DAY, 0, MAX(dtReading)), 0)) AS varchar) AS date,
  (CAST(COUNT(*) AS float(1)) / CAST((DATEPART(HOUR, GETDATE()) * 30) AS float(1)) * CAST(100 AS float(1))) AS dayPercentage

FROM Controller
INNER JOIN ManufacturingLayout
  ON Controller.machID = ManufacturingLayout.workStationID
INNER JOIN ReaderData
  ON Controller.ctrlID = ReaderData.controllerID

WHERE dtReading >= CONVERT(datetime, '09/05/2018', 103)
AND dtReading <= DATEADD(HOUR, 24, CONVERT(datetime, '16/05/2018 23:59:59', 103))
AND (EventType = '(0x05)Open switch')
GROUP BY controllerID,
         DATEADD(DAY, DATEDIFF(DAY, 0, dtReading), 0),
         workStationNo
ORDER BY 1, 2

查詢輸出

Workstation no controllerID  date dayPercentage
ZW01006            38         15    80.20833
ZW01006            38         16    142.0833
ZW01007            30         15    62.5
ZW01007            30         16    120.2083
ZW01008            31         15    92.70833
ZW01008            31         16    141.0417
ZW01010            40         15    0.625

源數據

workStationNo   controllerID    dtReading
ZW01007            30           2018-05-16 15:42:39.000
ZW01007            30           2018-05-16 15:42:38.000
ZW01007            30           2018-05-16 15:40:38.000    <- duplicate
ZW01007            30           2018-05-16 15:40:38.000    <- duplicate 
ZW01007            30           2018-05-16 15:38:37.000
ZW01007            30           2018-05-16 15:38:37.000
ZW01007            30           2018-05-16 15:36:37.000
ZW01007            30           2018-05-16 15:36:37.000
ZW01007            30           2018-05-16 15:34:36.000

您可以將派生表用於JOINReaderData ,以便在JOIN之前刪除重復項:

...
INNER JOIN (SELECT DISTINCT controllerID, dtReading
            FROM ReaderData) ReaderData
...

暫無
暫無

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

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