0

是否可以在外部应用中使用 if 语句?我似乎无法让它工作。

这是有效的现有代码:

select id
from
residentmemberlease rml
left outer join lease l on rml.leaid = l.leaid
outer apply
(SELECT TOP(1) * FROM dbo.RentalHistory a WITH(NOLOCK) WHERE a.resmID = RML.resmID and rthDisplayBit='1'
ORDER BY ISNULL(a.rthMoveOutDate, a.rthMoveInDate) DESC) AS RH

我希望它看起来像这样,具体取决于 codeleasestatuscode 的值(如果它是 1 或 2):

select id
from
residentmemberlease rml
left outer join lease l on rml.leaid = l.leaid
outer apply
if(select codeleasestatuscode from lease) = '1'
begin
(SELECT TOP(1) * FROM dbo.RentalHistory a WITH(NOLOCK) WHERE a.resmID = RML.resmID and rthDisplayBit='1'
ORDER BY ISNULL(a.rthMoveOutDate, a.rthMoveInDate) DESC) AS RH
end
if(select codeleasestatuscode from lease) = '2'
begin
(SELECT TOP(1) * FROM dbo.RentalHistory a WITH(NOLOCK) WHERE a.resmID = RML.resmID and rthDisplayBit='0'
ORDER BY ISNULL(a.rthMoveOutDate, a.rthMoveInDate) DESC) AS RH
end
4

1 回答 1

1
       SELECT id --<<-- best to add aliases to all columns
         FROM residentmemberlease rml
    LEFT JOIN lease l ON rml.leaid = l.leaid
  OUTER APPLY
            (SELECT TOP(1) *
               FROM dbo.RentalHistory a WITH(NOLOCK)
              WHERE a.resmID = RML.resmID
                AND (l.codeleasestatuscode = '1' AND a.rthDisplayBit='1' OR
                     l.codeleasestatuscode = '2' AND a.rthDisplayBit='0')
           ORDER BY ISNULL(a.rthMoveOutDate, a.rthMoveInDate) DESC
            ) AS RH;
于 2012-11-05T11:26:17.273 回答