SQL-запрос игнорирует последующие отдельные строки

У меня есть стол,

C_A C_B C_C  C_D
mr  1  1000  d
mrs 2  500   d
mz  3  2500  d
mrs 4  1500  d

Я бы хотел SELECT * FROM Таблица ORDER BY C_C DESC но я бы хотел игнорировать любые последующие (после упорядочивания) строки, в которых столбец A (C_A) такой же, как строки, имеющие большее значение в столбце C.

так должно выглядеть так:

C_A C_B C_C  C_D
mz  3  2500  d
mrs 4  1500  d
mr  1  1000  d

когда выходной

Я пробовал много разных запросов и подзапросов в использовании DISTINCT и сгруппировав столбец C_A, но я недостаточно компетентен в SQL, чтобы применить их к моему примеру.

Любые идеи о том, как я смогу сделать это?

0

Решение

Я не совсем уверен, что понял проблему. Но это, пожалуй, то, что вы ищете:

select t1.*
from tablename t1
join (select C_A, max(C_C) as maxcc
from tablename
group by C_A) t2
on t1.C_A = t2.C_A and t1.C_C = t2.maxcc

добавлять ORDER BY t1.C_C desc в конце, если нужно.

0

Другие решения

использование ROW_NUMBER () А ТАКЖЕ РАЗДЕЛЕНИЕ

Declare @tblTest AS Table
(
C_A VARCHAR(50),
C_B  INT,
C_C INT,
C_D VARCHAR(50)
)INSERT INTO @tblTest VALUES('mr',1,1000,'d')
INSERT INTO @tblTest VALUES('mrs',2,500,'d')
INSERT INTO @tblTest VALUES('mz',3,2500,'d')
INSERT INTO @tblTest VALUES('mrs',4,1500,'d')SELECT
C_A ,
C_B ,
C_C ,
C_D
FROM
(
SELECT
C_A ,
C_B ,
C_C ,
C_D ,
ROW_NUMBER() OVER(Partition BY C_A Order by  C_A,C_D) AS PartNo
FROM
@tblTest
)X
WHERE X.PartNo=1
0

По вопросам рекламы [email protected]