簡體   English   中英

如何比較除一列或兩列之外具有相同列值的行之間的日期?

[英]How to compare dates between rows with same column values except one or two columns?

我對 SQL 查詢的邏輯有疑問,請幫我解決這個問題。

如何 select SQL 服務器中單個發票號的最早過帳日期的行:

現有表:

發票號碼 姓名 發布日期 地方
2050 恐龍 20.05.1998 倫敦
:-------------- :-------------------- --------------- --------------
2050 恐龍 25.04.1995 澳大利亞
--------------- -------------------- --------------- --------------
2045 鳥類 1997 年 3 月 18 日 美國
--------------- -------------------- --------------- --------------
2045 鳥類 27.07.1995 中國
--------------- -------------------- --------------- --------------
2075 獅子 12.06.2012 印度
-------------------------------------------------- ------------------

我想像這樣查詢 output:


發票號碼 姓名 發布日期 地方
2050 恐龍 25.04.1995 澳大利亞
--------------- -------------------- --------------- --------------
2045 鳥類 27.07.1995 中國
--------------- -------------------- --------------- --------------
2075 獅子 12.06.2012 印度
-------------------------------------------------- ------------------

我正在努力研究如何比較兩個過帳日期的日期並返回 SQL 服務器中每個發票號的過帳日期列值最低的行。

我之前嘗試使用 MIN() 和 INNER JOIN 但它對我復雜的代碼庫沒有幫助,所以我在這里以簡單的方式顯示它。

先感謝您。

window 函數是您的朋友。 非常值得您花時間熟悉它們。 也不清楚您是否需要在partition by中使用NAME

此外,如果您想查看平局...使用dense_rank()而不是row_number()

更高效

Select *
 From  (
         Select *
               ,RN = row_number() over (partition by InvoiceNumber,Name order by PostingDate)
           From YourTable
       ) A
 Where RN=1

另外的選擇

Select top 1 with ties *
 From  YourTable 
 Order by row_number() over (partition by InvoiceNumber,Name order by PostingDate)

暫無
暫無

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

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