作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个类似于以下的场景,我想做的就是找到三列中的最大值 - 这似乎是一个非常冗长的方法,我正在使用它来查找列 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
最佳答案
SQL Server 在接受值列表并返回最大值的其他 RDBMS 中没有等效于 GREATEST
的函数。
但是您可以使用 table valued constructor 模拟类似的东西由所需的列组成,然后对其应用 MAX
。
SELECT *,
(SELECT MAX(Age)
FROM (VALUES(PigEarlyAge),
(PigMiddleAge),
(PigOldAge)) V(Age)) AS mx
FROM #Pig
关于sql - 最多几列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16928029/
我正在尝试使用描述的方法将数据表转换为字典 here , 但我得到一个错误 Cannot implicitly convert type System.Collections.Generic.Dict
我想在几个列上使用 orderBY,但它们应该像一列一样。 该表看起来像这样: col1 | col2 5 | 2 | | 3 7 | | 1 | 1
我有这张表 mytable: +----+--------------------------------------+ | id | date1 | date2 | date3
我是一名优秀的程序员,十分优秀!