SQL用于查找同一模式的两个表之间的匹配行

时间:2014-01-07 09:40:25

标签: sql db2

我有两个表,比如X和X_STAGING。

它们在列中完全相同,即模式相同。但是,行数不同。我知道X的第一行是在X_STAGING中 - 数据是从X_STAGING部分复制到X.但是我需要确切地知道X_STAGING的哪一行包含数据,这些行进入X的第一行。

目前我正在使用此

SELECT 
SUM(MATCH) 
FROM 
(
SELECT 
CASE WHEN X_STAGING.KEY_ID='KEY_FROM_THE_FIRST_ROW_OF_X' THEN 1 ELSE 0 END AS MATCH 
FROM 
X_STAGING 
WHERE ROWNUM<2550000
) 

更改ROWNUM我可以找到计数到达的ROWNUM。然后调整ROWNUM我最终可以到达特定的行。

这样可行,但我相信必须有更快捷,更聪明的方法。 请帮忙。

注意:我正在Linux,DB2环境中工作。

1 个答案:

答案 0 :(得分:0)

我不明白你想要完成什么,但以下是你所要求的:

SELECT 
MAX(MATCH) 
FROM 
(
SELECT 
CASE WHEN X_STAGING.KEY_ID='KEY_FROM_THE_FIRST_ROW_OF_X' THEN ROWNUM ELSE 0 END AS MATCH 
FROM 
X_STAGING 
)