我被困在構建邏輯的點上。誰能幫我 ?邏輯在結果集中只得到一行
要求:
對於privacyType = '主地址',如果有> 1行,其中SI0_ADDR.ADDR_TYPE_CODE = 'M',顯示行,其中的currentdate()是SI0_ADDR.ADDR_EFF_DATE和SI0_ADDR.ADDR_EXPR_DATE之間。
我的查詢是:
select STU_ID
,case when Privacyflag = '' then 'N'
else Privacyflag
end Privacyflag
,type from (
select a.STU_ID,Privacyflag,a.type
,ROW_NUMBER() OVER (ORDER BY ADDR_EXPR_DATE DESC) disp_nm from (
select ad.STU_ID, case when ad.ADDR_TYPE_CODE = 'M' then ad.ADDR_PRIVACY_FLAG
when ad.ADDR_TYPE_CODE='' then 'N'
end Privacyflag, 'Primary Phone' type
, case when ADDR_EXPR_DATE = '1900-01-01' then '2100-12-31'
else ADDR_EXPR_DATE
end as ADDR_EXPR_DATE
from SI0_ADDR ad
where ad.STU_ID = @studentid) a
where Privacyflag is not null
) ab
where ab.disp_nm = '1'
這個邏輯並不在某些情況下
請按照幫助文檔中的發佈準則。 [最小,完整,可驗證的示例](http://stackoverflow.com/help/mcve)適用於此處。 「在某些情況下不工作」不是問題描述。 – Prune
查詢中的「主要地址」在哪裏?我沒有看到你使用它的地方 – FLICKER