从列值应该不同的表中选择值

Raj*_*esh 0 join sql-server group-by

假设表中有 4 列。

cpt,cpt4mod,itemcharge,eff_date.
Run Code Online (Sandbox Code Playgroud)

条件1:如果值cpt,cpt4itemcharge是一样的,但是eff_date是不同的。然后我需要根据eff_date.

condtition2:如果值cptcpt4是相同的,但eff_dateitemcharge不同。然后我需要根据eff_date.

条件3:如果所有列都具有相同的值,那么我需要根据 eff_date

条件 4:如果 的值cpt,cpt4and,eff_date相同但itemcharge 不同。然后我需要获取除最新记录之外的所有记录

Lam*_*mak 5

好吧,条件 2 似乎也涵盖了条件 1 和条件 3。你可能需要的是这样的:

;WITH CTE AS
(
    SELECT  *,
            N = RANK() OVER(PARTITION BY cpt, cpt4 ORDER BY eff_date DESC)
    FROM dbo.YourTable
)
SELECT *
FROM CTE
WHERE N = 1;
Run Code Online (Sandbox Code Playgroud)

这应该涵盖您的每个条件。