簡體   English   中英

如何使用此特定查詢使用SQL從表的每個組中選擇前2個值

[英]How Select top 2 values from each group in a table with SQL using this specific query

我有這個查詢。 它給了我多行(第一列重復),第二列和第三列的數據。

也許我對查詢做錯了,因為它是一個簡單的帶有內部聯接的查詢。

盡管我需要每個結果行的前兩行。

桌子:牛仔褲,產品

牛仔褲:CHG_I,JeanID,CHG_Date產品:CHG_I,Desc,價格

查詢:

Select D.JeanID, P.Desc, P.Price
FROM Products P inner join Jeans D on D.CHG_I = P.CHGPI
Where D.CHG_Date=convert(date,sysdatetime())

這給了我這張桌子:

+-----------------------+
¦ JeanID - Desc - Price ¦
¦-----------------------¦
¦ 3559 - 5234523 - 4.49 ¦
¦ 3559 - 6235523 - 4.49 ¦
¦ 3559 - 9823923 - 4.49 ¦
¦ 3559 - 0809833 - 3.99 ¦
¦ 3559 - 1231212 - 3.99 ¦
¦ 3552 - 2352354 - 3.99 ¦
¦ 3440 - 5235325 - 2.99 ¦
¦ 3440 - 5235233 - 2.99 ¦
¦ 3882 - 2352352 - 2.99 ¦
¦ 3990 - 2623532 - 3.99 ¦
+-----------------------+

我需要修改查詢以獲取此信息:

+-----------------------+
¦ JeanID - Desc - Price ¦
¦-----------------------¦
¦ 3559 - 5234523 - 4.49 ¦
¦ 3559 - 6235523 - 4.49 ¦
¦ 3552 - 2352354 - 3.99 ¦
¦ 3440 - 5235325 - 2.99 ¦
¦ 3440 - 5235233 - 2.99 ¦
¦ 3882 - 2352352 - 2.99 ¦
¦ 3990 - 2623532 - 3.99 ¦
+-----------------------+

一直在尋找解決方案,盡管從此查詢開始時無法獲取解決方案。 :(

;With Results
AS
 (
    Select D.JeanID, P.Desc
            , P.Price, rn = ROW_NUMBER() OVER (PARTITION BY D.JeanID ORDER BY P.Price DESC)
    FROM Products P inner join Jeans D 
    on D.CHG_I = P.CHGPI
    Where D.CHG_Date=convert(date,sysdatetime())
 )
SELECT JeanID, Desc, Price
FROM Results
WHERE rn <= 2

暫無
暫無

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

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