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

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

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

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

我的同事使用相同的BUT,不同的是他没有输入“||”在两个属性之间,他只是输入一个“,”。我用两者测试了一些小数据,但在输出中没有发现任何差异。

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

现在有人知道“||”之间有什么区别吗?和“,”在此命令中?

非常感谢..

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

X    Y
A    BC
AB   C

串联版本会将它们合并为 "ABC",但您可能不想这样做。逗号版本将值视为 ('A', 'BC') 和 ('AB', 'C'),因此它们是分开的——就像您所做的 group by X, Y.

仅当您确实有意将这些值连接在一起。