我必须执行一个查询,其中场景如下所示;查询场景
Col_1 Col_2 Col_3 Col_4 Col_5
A AB AC AD AE
B BC BD BE ?
C CD CE ? ?
D DE ? ? ?
E ? ? ? ?
以下任何帮助是高度赞赏。
感谢, 阿米特
我必须执行一个查询,其中场景如下所示;查询场景
Col_1 Col_2 Col_3 Col_4 Col_5
A AB AC AD AE
B BC BD BE ?
C CD CE ? ?
D DE ? ? ?
E ? ? ? ?
以下任何帮助是高度赞赏。
感谢, 阿米特
您为每列需要不同rows
:
select
col_1
,col_1 || min(col_1) over (order by ... rows between 1 following and 1 following)
,col_1 || min(col_1) over (order by ... rows between 2 following and 2 following)
,col_1 || min(col_1) over (order by ... rows between 3 following and 3 following)
,col_1 || min(col_1) over (order by ... rows between 4 following and 4 following)
谢谢Dieter, 这工作正常。我有一个疑问,一直如此。 min(col1)如何在这里工作。 max(col1)over ..也提供了所需的结果。有什么不同。 – user3901666
@ user3901666:这是一种模仿Teradata中Standatd SQL的'LEAD(col_1,n)'的方法。由于窗口的大小恰好是一行“MIN”,“MAX”将返回相同的值。 – dnoeth
{
SELECT CHR(64+LEVEL) AS A,
DECODE(SIGN(4 - LEVEL) , -1, '?',CHR(64+LEVEL)||CHR(65 +LEVEL)) B,
DECODE(SIGN(3 - LEVEL) , -1, '?',CHR(64+LEVEL)||CHR(66 +LEVEL)) C,
DECODE(SIGN(2 - LEVEL) , -1, '?',CHR(64+LEVEL)||CHR(67 +LEVEL)) D,
DECODE(sign(1 - level) , -1, '?',chr(64+level)||chr(68 +level)) E
from dual connect by level <6;
} 这上面使用Oracle 10g,其他数据库应该有一些其他的策略。
非常感谢Dieter, 它的工作完美。 @ nirjhar - 不知道如何实施teradata.Thanks你的帮助。 – user3901666
尝试使用此行1以下以下和1来实现。 – user3901666
你能显示实际数据吗?你的Teradata发布是什么? – dnoeth
Hi Dieter, 截至目前,我没有实际的数据。我的teradata版本是14.01.0.04。 – user3901666