[英]SELECT Row Values WHERE MAX() is Column Value In GROUP BY Query
我該如何選擇? 我可以創建用戶定義的匯總函數嗎
SELECT Max(A),(SELECT TOP 1 FROM TheGroup Where B=Max(A))
從MyTable中SELECT Max(A),(SELECT TOP 1 FROM TheGroup Where B=Max(A))
MyTable如下所示
A B C
--------------
1 2 S
3 4 S
4 5 T
6 7 T
我想要這樣的查詢
SELECT MAX(A),(B Where A=Max(A)),C FROM MYTable GROUP BY C
我期待如下結果
MAX(A) Condition C
-----------------------
3 4 S
6 7 T
SELECT A,B,C FROM
(SELECT *, ROW_NUMBER() OVER (PARTITION BY C ORDER BY A DESC) RN FROM MyTable)
WHERE RN = 1
(此查詢始終每個C值僅返回一行)
要么
WITH CTE_Group AS
(
SELECT C, MAX(A) AS MaxA
FROM MyTable
GROUP BY C
)
SELECT g.MaxA, t.B, g.C
FROM MyTable t
INNER JOIN CTE_Group g ON t.A = g.MaxA AND t.C = g.C
(如果有多個行具有相同的Max(A)值-此查詢將返回所有這些行)
SELECT Max(A)
FROM MyTable
Where B=(SELECT Max(A) FROM MyTable)
更新:
SELECT *
FROM MyTable
Where B=(SELECT Max(A) FROM MyTable)
更新2:
SELECT DISTINCT A, B
FROM MyTable
Where A=(SELECT Max(A) FROM MyTable GROUP BY C)
更新3:
好的,我想我知道您現在要尋找的是什么。
SELECT *
FROM MyTable
Where A in (SELECT Max(A) FROM MyTable GROUP BY C)
SELECT t1.*
FROM YourTable t1
Left Outer Join YourTable t2 on t1.C=t2.C AND t1.A < t2.A
WHERE t2.A is null
WITH
cte AS
(
SELECT
ROW_NUMBER() OVER (ORDER BY cola desc) AS Rno,
*
FROM
tbl
)
SELECT top 1
cola,colb
FROM
cte
order by Rno
然后嘗試:
WITH
cte AS
(
SELECT
ROW_NUMBER() OVER (PARTITION BY col3 ORDER BY col1 desc) AS Rno,
*
FROM
tbl
)
SELECT
col1,col2,col3
FROM
cte
WHERE Rno=1
這個怎么樣:
SELECT *
FROM MyTable
WHERE A IN (SELECT MAX(A) FROM MyTable GROUP BY C)
嘗試以下查詢:
SELECT TABLE1.A , TABLE2.B , TABLE1.C
FROM
(
SELECT MAX(A) AS A,C
FROM MYTable
GROUP BY C
) AS TABLE1
INNER JOIN
(
SELECT *
FROM MYTable
) AS TABLE2 ON TABLE1.A = TABLE2.A
您可以通過簡單的連接查詢來做到這一點。 連接查詢總是比輸入查詢運行得更快。 連接查詢在執行查詢時僅運行一次。 我們可以使用IN查詢來歸檔相同的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.