2014-01-07 95 views
0

我有两个表,比如X和X_STAGING。SQL查找两个相同模式表之间的匹配行

它们在列中完全相同,即模式相同。但是,行数是不同的。我知道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不计到1然后我调整ROWNUM我最终可以得到特定行。

这会起作用,但我确信必须有更快更聪明的方式来做到这一点。 请帮忙。

注:我正在开发Linux,DB2环境。

回答

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 
) 
+0

这个查询告诉我,在X行处于X_STAGING。我已经知道了。我需要知道哪一行X_STAGING是X的第一行? – partha

+0

当我在Oracle数据库上运行它时,我得到了ROWNUM。 –

+0

你说得对。谢谢。 – partha

相关问题