Table-1
:NominationPeriods
沒有得到與內部查詢慾望SQL輸出
----------------------
Id Period Status
----------------------
1 9 Unlocked
3 8 locked
----------------------
Table-2
:NominationRevisions
-------------------------------------------
Id Revision Period Status
-------------------------------------------
15 1 9 M
19 2 9 R
20 3 9 A
--------------------------------------------
Query
:
SELECT Period
,nomper.STATUS
,(
CASE
WHEN (
(
SELECT (
CASE
WHEN STATUS IN ('P','A')
THEN 'TRUE'
ELSE 'FALSE'
END
)
FROM NominationRevisions
WHERE revision = (
SELECT max(revision)
FROM NominationRevisions
WHERE Period = nomper.Period
)
AND NomPeriodNbr = nomper.Period
) = 'TRUE'
)
THEN 'TRUE'
ELSE 'FALSE'
END
) AS Flag
FROM NominationPeriods nomper
Expected Output
:
-------------------------------------
Period Status Flag
-------------------------------------
9 Unlocked TRUE
8 locked TRUE
-------------------------------------
Actual Output
:
-------------------------------------
Period Status Flag
-------------------------------------
9 Unlocked TRUE
-------------------------------------
我想爲具有輸出所有NominationPeriods列表
- 時期的最高版本是 'A' 或 'P',然後標記= TRUE
- 如果沒有找到一段時間的修訂,那麼也返回標誌=真
這是因爲你的子查詢在where子句中只返回一個結果。 –
由於@SuchitKumar注意到子查詢生病期沒有返回期間8,因爲在第二個表中沒有該時期的行。嘗試使用連接重寫它,以便可以使用外部連接 – jean
您正在使用哪些DBMS? Postgres的?甲骨文? –