我有一個類似於以下的場景,我想要做的就是找到最多三列 - 這似乎是一個非常冗長的方法,我用它來找到列mx
。最大的幾列
什麼是更簡潔更優雅的解決方案?
CREATE TABLE #Pig
(
PigName CHAR(1),
PigEarlyAge INT,
PigMiddleAge INT,
PigOldAge INT
)
INSERT INTO #Pig VALUES
('x',5,2,3),
('y',2,9,5),
('z',1,1,8);
WITH Mx_cte
AS
(
SELECT PigName,
Age = PigEarlyAge
FROM #Pig
UNION
SELECT PigName,
Age = PigMiddleAge
FROM #Pig
UNION
SELECT PigName,
Age = PigOldAge
FROM #Pig
)
SELECT x.PigName,
x.PigEarlyAge,
x.PigMiddleAge,
x.PigOldAge,
y.mx
FROM #Pig x
INNER JOIN
(
SELECT PigName,
mx = Max(Age)
FROM Mx_cte
GROUP BY PigName
) y
ON
x.PigName = y.PigName
你的意思是你只需要最大的年齡總結? –
@YuriyGalanter - 不,結果應該與我在帖子中包含的腳本完全一樣 - 如果這有點含糊不清,請道歉。 – whytheq