數據集我工作的例子是:使用條件提取的最後一列
ColA ColB ColC ColD ColE ColF ColG ColH ColI ColJ ColK ColL ColM X1 5 X2 6 X3 5 X4 4 X5 5 X6 3 X7
與號碼列表示IDS,其餘的代表值等
我想從單元格中提取值,該單元格恰好落在id
之後。5.如果查看示例,可以看到不斷重複。我需要提取單元格的最新值。所以,在這種情況下,它應該是'X6'。
你能幫我寫這個問題的SQL查詢嗎?
謝謝 Nimish
數據集我工作的例子是:使用條件提取的最後一列
ColA ColB ColC ColD ColE ColF ColG ColH ColI ColJ ColK ColL ColM X1 5 X2 6 X3 5 X4 4 X5 5 X6 3 X7
與號碼列表示IDS,其餘的代表值等
我想從單元格中提取值,該單元格恰好落在id
之後。5.如果查看示例,可以看到不斷重複。我需要提取單元格的最新值。所以,在這種情況下,它應該是'X6'。
你能幫我寫這個問題的SQL查詢嗎?
謝謝 Nimish
使用CASE
表達,以相反的順序經過柱:
的Oracle 11g R2架構設置:
CREATE TABLE table_name (ColA, ColB, ColC, ColD, ColE, ColF, ColG, ColH, ColI, ColJ, ColK, ColL, ColM) As
SELECT 'X1', '5', 'X2', '6', 'X3', '5', 'X4', '4', 'X5', '5', 'X6', '3', 'X7' FROM DUAL
查詢1:
SELECT CASE
WHEN ColL = '5' THEN ColM
WHEN ColK = '5' THEN ColL
WHEN ColJ = '5' THEN ColK
WHEN ColI = '5' THEN ColJ
WHEN ColH = '5' THEN ColI
WHEN ColG = '5' THEN ColH
WHEN ColF = '5' THEN ColG
WHEN ColE = '5' THEN ColF
WHEN ColD = '5' THEN ColE
WHEN ColC = '5' THEN ColD
WHEN ColB = '5' THEN ColC
WHEN ColA = '5' THEN ColB
END AS latest
FROM table_name
| LATEST |
|--------|
| X6 |
如果你的列名是動態的,你可以通過在命令動態地選擇所需的列使用PL/SQL塊。請注意,在此我使用ROWNUM < 2
將行限制爲1.如果表中有多行,則需要使用另一個循環。
SET SERVEROUTPUT ON;
DECLARE
v_col_value VARCHAR2 (10) := NULL;
v_prev_value VARCHAR2 (10) := NULL;
BEGIN
FOR cur IN ( SELECT COLUMN_NAME
FROM ALL_TAB_COLUMNS
WHERE TABLE_NAME = 'TST_TAB'
ORDER BY COLUMN_NAME DESC)
LOOP
v_prev_value := v_col_value;
EXECUTE IMMEDIATE
'SELECT ' || cur.column_name || ' FROM TST_TAB WHERE ROWNUM < 2'
INTO v_col_value;
IF v_col_value = '5'
THEN
DBMS_OUTPUT.PUT_LINE (v_prev_value);
EXIT;
END IF;
END LOOP;
END;
標記您使用的RDBMS(MySQL,MS SQL Server等,...)。 –
數據庫中沒有單元格。你實際上使用Excel嗎? – GSerg
正如你自己所說,5重複。那麼你認爲哪5個,以確定以下期望值? – Yunnosch