Oracle只获取多个表查询的最后一行数据

时间:2017-12-19 02:25:07

标签: database oracle

我有一个cost.long <- cost %>% gather(key, value, -c(Date:Atrb)) %>% separate(key, into=c("Metric", "Group"), sep="_") 查询只能获取最后一行数据。

Oracle

当我尝试添加查询时:

SELECT
R.FORM_NO,
R.PART_NO,
L.L_FORM_NO,
L.HDR_ID,
L.CP_ID_SLC_FORM_NO,
S.FORM_NO,
S.PART_NO,
S.CP_ID
FROM
WA_T_QC_REVISION R,
WA_T_QC_REVISION_LIST L,
WA_T_QC_CP_SELECTED S
WHERE
R.FORM_NO = L.HDR_ID AND
S.FORM_NO = L.CP_ID_SLC_FORM_NO AND
R.PART_NO = 'PA03670-B501'
ORDER BY R.FORM_NO DESC

我收到了错误

SELECT * FROM(
SELECT
R.FORM_NO,
R.PART_NO,
L.L_FORM_NO,
L.HDR_ID,
L.CP_ID_SLC_FORM_NO,
S.FORM_NO,
S.PART_NO,
S.CP_ID
FROM
WA_T_QC_REVISION R,
WA_T_QC_REVISION_LIST L,
WA_T_QC_CP_SELECTED S
WHERE
R.FORM_NO = L.HDR_ID AND
S.FORM_NO = L.CP_ID_SLC_FORM_NO AND
R.PART_NO = 'PA03670-B501'
ORDER BY R.FORM_NO DESC)
WHERE ROWNUM <= 1

我想要的只是从表格中获取最后一行数据。

1 个答案:

答案 0 :(得分:1)

此处的立即修复只是将具有相同名称的列别名,以使它们不再具有相同的名称,例如。

SELECT * FROM (
    SELECT
        R.FORM_NO AS FORM_NO_R,
        R.PART_NO AS PART_NO_R,
        L.L_FORM_NO,
        L.HDR_ID,
        L.CP_ID_SLC_FORM_NO,
        S.FORM_NO AS FORM_NO_S,
        S.PART_NO AS PART_ON_S,
        S.CP_ID
    FROM WA_T_QC_REVISION R
    INNER JOIN WA_T_QC_REVISION_LIST L
        ON R.FORM_NO = L.HDR_ID
    INNER JOIN WA_T_QC_CP_SELECTED S
        ON S.FORM_NO = L.CP_ID_SLC_FORM_NO
    WHERE
        R.PART_NO = 'PA03670-B501'
    ORDER BY R.FORM_NO DESC
)
WHERE ROWNUM <= 1

另请注意,我使用显式内部联接替换了隐式联接。使用正式连接语法是编写查询的首选方式(已经超过25年)。