Oracle SQL:按他们最近的每个ID列选择所有行
问题描述:
这可能是非常简单的解决,但我似乎无法通过Google正确找到答案。Oracle SQL:按他们最近的每个ID列选择所有行
我正在寻找从他们最近的ID拉动表中的所有行,而无需手动键入每个列名称。我有这种已经与以下查询工作:
SELECT
STANDARD_ID,
MAX(ID)
FROM
HIST_ILLUM_RT
WHERE STANDARD_ID IS NOT NULL
GROUP BY
STANDARD_ID
其中拉我需要的所有行。我试图通过使用此查询来解决这个问题:
SELECT
*
FROM
HIST_ILLUM_RT
WHERE ID = (SELECT MAX(ID)
FROM HIST_ILLUM_RT)
应该拉动的行数将会改变超时。
是否有可能拉动所有列以及行而无需手动输入每个列名称(在这种情况下,有超过50)?或者,除了在Oracle sql中手动输入外,别无选择吗?
答
如何使用自己的查询与GROUP BY?
SELECT *
FROM HIST_ILLUM_RT
WHERE ID IN (
SELECT MAX(ID)
FROM HIST_ILLUM_RT GROUP BY STANDARD_ID
)
答
试试这个:
WITH CTE AS(
SELECT STANDARD_ID,ID,
ROW_NUMBER() OVER(Partition BY ID ORDER BY ID DESC) RN
FROM HIST_ILLUM_RT
WHERE STANDARD_ID IS NOT NULL
)
SELECT STANDARD_ID,ID
FROM CTE
WHERE RN = 1;
嗯..没想到这样做似乎是一个好主意。但这似乎只是做 SELECT * FROM HIST_ILLUM_RT 但它也许可以工作。我会继续看它,谢谢! – spyr0
等待!我错了。它可能实际上在工作,让我仔细检查。 – spyr0