簡體   English   中英

SQL唯一區別列1,而不是其他列

[英]SQL Unique Distinct Column 1 and not the other columns

我試圖運行一個sql語句,該語句然后連接2個表,並在ID列上執行不同操作,並運行where子句以將數據過濾到所涉及的一天中的一個小時。 結果將顯示一天中的一個小時,但將刪除重復項,以便為我提供獨特的記錄,我看到了許多帖子,這些帖子有些幫助,有些令人困惑。 到目前為止,這就是我所擁有的。

  select DISTINCT FinalID,finaltime,finalos
    from dbo.FinalList
    join dbo.Users on dbo.FinalList.FinalID = dbo.Users.usersid 
   WHERE FinalDate >='2014-07-01'
     and finaldate <='2014-07-01'
     and finaltime >='00:00:00'
     and FinalTime <= '00:59:59'
order by FinalDate asc, FinalTime asc 

如果我拿走了決賽時間,然后選擇DISTINCT FinalID,則我會得到正確的數字。 但是我想查看來自Finaltime和Finalos的信息,但是一旦我添加了這些信息,它也會嘗試在這些列上做一個與眾不同的結果,而且我得到的結果令人迷惑。 我會做子查詢嗎?

好吧,您必須確定所需的值。

也許使用group by將提供您想要的:

select FinalID, min(finaltime), max(finaltime),
       min(finalos), max(finalos)
from dbo.FinalList join
     dbo.Users
     on dbo.FinalList.FinalID = dbo.Users.usersid 
where FinalDate >='2014-07-01' and
      finaldate <='2014-07-01' and
      finaltime >='00:00:00' and
      FinalTime <= '00:59:59'
group by FinalId;

獨特的( https://technet.microsoft.com/zh-cn/library/ms187831%28v=sql.105%29.aspx )語句將為您返回唯一的行。 就是說,在您選擇的列中是唯一的。 因此,如果Col / Row中的一個與另一個不同,則也會作為結果輸出。 您應該使用MAX或Min,然后再分組。

您無需說明如何在具有相同ID但finaltimefinalos值不同的各種記錄之間進行決定。

我會假設你的最后時間是你的最晚時間(最大的)和所需的finalos值與最后的時間一起去。

;
WITH A as 
(
   select FinalID
       ,  Finaltime
       ,  Finalos
   from dbo.FinalList
     join dbo.Users 
        on dbo.FinalList.FinalID = dbo.Users.usersid 
   WHERE FinalDate >='2014-07-01'
     and finaldate <='2014-07-01'
     and finaltime >='00:00:00'
     and FinalTime <= '00:59:59'
 )
 ,  B as  
 (
     SELECT  A.FinalID
         ,   A.Finaltime
         ,   A.FinalOS
         ,   RowNumber = ROW_NUMBER() OVER (
                           PARTITION BY A.FinalID
                           ORDER BY FinalTime DESC
                         )
     FROM    A
 )
 SELECT  FinalID
    ,    FinalTime
    ,    FinalOS
 FROM    B
 WHERE   B.RowNumber = 1
 ORDER BY
        FinalTime
    ,   FinalOS

ETA:固定語法。

暫無
暫無

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

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