Cómo escribir una statement de caso dentro de seleccionar

Tengo un procedimiento almacenado que contiene una statement de caso dentro de una statement de selección.

select Invoice_ID, 'Unknown' as Invoice_Status, case when Invoice_Printed is null then '' else 'Y' end as Invoice_Printed, case when Invoice_DeliveryDate is null then '' else 'Y' end as Invoice_Delivenetworking, case when Invoice_DeliveryType <> 'USPS' then '' else 'Y' end as Invoice_eDeliver, Invoice_ContactLName+', '+Invoice_ContactFName as ContactName, from dbo.Invoice left outer join dbo.fnInvoiceCurrentStatus() on Invoice_ID=CUST_InvoiceID where CUST_StatusID= 7 order by Inv_Created 

En case when Invoice_DeliveryType <> 'USPS' then '' else 'Y' end as Invoice_eDeliver línea case when Invoice_DeliveryType <> 'USPS' then '' else 'Y' end as Invoice_eDeliver

Necesito comprobar si hay una dirección de correo electrónico válida (si el correo electrónico es válido, muestre Y, de lo contrario, muestre N).

Entonces la línea leería:

if Invoice_DeliveryType <> 'USPS' then '' else ( If ISNULL(Select emailaddr from dbo.Client Where Client_ID = SUBSTRING(Invoice_ID, 1, 6)), 'Y', 'N')

¿Cómo puedo escribir esta consulta?

Puedes hacer esto con un case . Creo que la siguiente es la lógica que quieres:

 (case when Invoice_DeliveryType <> 'USPS' then '' when exists (Select 1 from dbo.Client c Where c.Client_ID = SUBSTRING(i.Invoice_ID, 1, 6) and c.emailaddr is not null ) then 'Y' else 'N' end)