[英]SQL Data only returned if filtering on inner select with ROW_NUMBER
我試圖到達查詢的底部,如果我對以下語句的內部選擇進行過濾,則僅返回數據:
作品:
SELECT * FROM
(
SELECT
[szPhoneNo] Email
,ROW_NUMBER() OVER (PARTITION BY CLID ORDER BY t_clientphone.PhoneType_Id ASC) AS Seq
FROM [SLacsis_SLM].[dbo].[T_ClientPhone] t_clientphone INNER JOIN
[SLacsis_SLM].[dbo].[TL_PhoneType] PT ON t_clientphone.PhoneType_ID = PT.PhoneType_ID
WHERE t_clientphone.szPhoneNo LIKE '%reg28%'
) T where T.Seq = 1 --AND Email LIKE '%reg28%'
(返回10行)
不起作用:
SELECT * FROM
(
SELECT
[szPhoneNo] Email
,ROW_NUMBER() OVER (PARTITION BY CLID ORDER BY t_clientphone.PhoneType_Id ASC) AS Seq
FROM [SLacsis_SLM].[dbo].[T_ClientPhone] t_clientphone INNER JOIN
[SLacsis_SLM].[dbo].[TL_PhoneType] PT ON t_clientphone.PhoneType_ID = PT.PhoneType_ID
--WHERE t_clientphone.szPhoneNo LIKE '%reg28%'
) T where T.Seq = 1 AND Email LIKE '%reg28%'
(返回0行)
誰能解釋為什么第二個查詢沒有返回行,是否有辦法解決?
我知道當PARTITION BY
和ORDER BY
列不唯一時, ROW_NUMBER
是不確定的(內部選擇中的一些行就是這種情況)。
我將在此期間查看是否可以使用臨時表重新創建問題。
第二個查詢中的第一個項目(即Seq = 1的項目)沒有類似%REG28%的電子郵件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.