SQL Server Case 语句在 Delphi TADODataSet 中不起作用

SQL Server Case statement does not work in Delphi TADODataSet

在 Delphi XE5 中,我使用 TADODataSet 并将它的 CommandText 设置为此命令 (with CASE) :

SELECT 
    Master.*,
    CASE
       ( SELECT TOP (1) personeli_State 
         FROM Detail 
         WHERE Detail.FK_Key = Master.pk_key 
           AND Detail.personeli_State = 'Test' 
           AND Detail.sended = 0 ) 
       WHEN 'Test' THEN 'Test exist'
       ELSE '' 
     END AS PersonState
FROM   
    Master
LEFT OUTER JOIN 
    ExtraInfo ON ExtraInfo.p_key = Master.fk_ExtraInfo
WHERE  
    (fk_key=:Fk)

并且记录集为空但没有CASE声明记录集有数据。 (我不能使用计算列或 SQL 服务器视图,因为我使用了动态查询)

将 CASE 语句中的 Select 部分更改为以下内容:

    CASE
       ( SELECT TOP (1) personeli_State 
         FROM Detail 
          WHERE Detail.personeli_State = 'Test' 
           AND Detail.sended = 0
           AND Detail.FK_Key = Master.pk_key ) 

在我看来,ADO似乎改变了执行计划的优先级...!