是否可以使用 oracle 中的分析函数(例如滞后)来检查前一行,并根据 2 列确定这些值是否与当前行完全相同。如果是,则输出字母'Y',否则输出'N'。
就像是:
IF prev.col1 = curr.col1 and prev.col2 = curr.col2 THEN 'Y' ELSE 'N'
我想使用这个 Y 或 N 来过滤掉我正在编写的 Crystal Report 中的这些记录。
是否可以使用 oracle 中的分析函数(例如滞后)来检查前一行,并根据 2 列确定这些值是否与当前行完全相同。如果是,则输出字母'Y',否则输出'N'。
就像是:
IF prev.col1 = curr.col1 and prev.col2 = curr.col2 THEN 'Y' ELSE 'N'
我想使用这个 Y 或 N 来过滤掉我正在编写的 Crystal Report 中的这些记录。
是的,但由于分析处理得相当晚,因此您需要将分析作为子查询编写查询:
SELECT CASE WHEN col1 = prev_col1 AND col2 = prev_col2 THEN 'Y' ELSE 'N' END as yesno
FROM (
SELECT col1, col2,
LAG( col1, 1 ) OVER ( ORDER BY col1, col2 ) AS prev_col1
LAG( col2, 1 ) OVER ( ORDER BY col1, col2 ) AS prev_col2
FROM mytable
)
您需要ORDER BY
根据定义“上一个”行的方式来调整子句。PARTITION BY
如果您不想将整个表视为一组行,您可能还需要添加一个子句。