虽然我已经看到了这个问题的几个答案,但所有这些答案都倾向于依靠最强大的功能而不断回归
“Msg 195,Level 15,State 10,Line 1 “GREATEST”不是公认的内置函数名称。“
我想知道一种构建查询的方法,该查询为每一行返回工件ID,并且该行中的最大值以及它所在的列。任何建议都是受欢迎的。我已经看过这个板子和其他人的一些例子,但是他们会在各种错误中保持不变。
尝试和失败的代码,缩短了veiwing乐趣:
SELECT artifactID, GREATEST(V0,V1,V2,V3,V4,V5,V6...V98,V99) AS col_value,
CASE GREATEST(V0,V1,V2,V3,V4,V5,V6...V98,V99)
WHEN V0 THEN '0'
WHEN V1 THEN '1'
WHEN V2 THEN '2'
WHEN V3 THEN '3'
...
WHEN V99 THEN '99'
END AS col_name
FROM dbo.Theta
我想要查询的示例:
ArtifactID GreatestColumnValue ColumnValueCameFrom
00001 .330 59
00002 .89 89
...
01000 .44 7
谢谢!
答案 0 :(得分:3)
SELECT t.artifactID, c.col_value, c.col_name
FROM dbo.Theta t
OUTER APPLY
(SELECT TOP 1 *
FROM (
SELECT '0', V0 UNION ALL
SELECT '1', V1 UNION ALL
--...
SELECT '99', V99) X(col_name,col_value)
ORDER BY col_value desc) C