teradata row_number()over(按X分区,Y顺序为Z desc)= 1

时间:2016-11-10 15:12:36

标签: sql teradata

我经常在Teradata SQL助手中使用它:

row_number() over(partition by X||Y order by Z desc) = 1

我的同事使用相同的BUT,区别在于他没有进入" ||"在两个属性之间,他只需输入一个","。我用两者测试了一些小数据,但在输出中找不到任何差异。

我的假设是使用" ||"是两个属性(X和Y)的串联。这是真的吗?

现在有人在" ||"之间有什么区别?和","在这个命令?

非常感谢...

1 个答案:

答案 0 :(得分:4)

两者非常相似。但是,带有逗号的版本正确(大多数情况下)。考虑在这些情况下会发生什么:

X    Y
A    BC
AB   C

连接版本会将它们组合成" ABC",但您可能不想这样做。逗号版本将值视为(' A',' BC')和(' AB' C'),因此它们是分开 - 就像你做group by X, Y

如果真的是你的意图,那么只将值连接在一起。