/****** Script for SelectTopNRows command from SSMS ******/
SELECT DISTINCT
(
SELECT ForeignCurrencyBal
FROM [InsightWarehouse].[dbo].[v_Account] AS subA
WHERE BusinessDate=['2019-02-01','2019-01-31',etc..]
AND
subA.AccountNum = STMT.ACCOUNT_NUMBER
) AS Balance,
ACCOUNT_NUMBER,
CASE WHEN STMT.CRF_TYPE='CREDIT'
THEN STMT.AMOUNT_LCY
ELSE NULL
END as 'CreditAmount',
CASE WHEN STMT.CRF_TYPE='DEBIT'
THEN STMT.AMOUNT_LCY
ELSE NULL
END as 'DebitAmount',
STMT.BOOKING_DATE,
STMT.VALUE_DATE,
CRF_TYPE
FROM [InsightLanding].[dbo].[v_STMT_ENTRY] AS STMT
LEFT JOIN [InsightWarehouse].[dbo].[v_Account] AS A
ON a.AccountNum = STMT.ACCOUNT_NUMBER
WHERE STMT.MIS_DATE='2019-02-01'
AND
STMT.ACCOUNT_NUMBER='14498478'
Nesta linha
WHERE BusinessDate=['2019-02-01','2019-01-31',etc..]
esta lista pode ser obtida por subconsulta.
Eu quero colocar a condição onde no dia anterior, significa o segundo item desta lista. algo assim
BusinessDate='2019-01-31'
Algo assim:
UPD: Preste atenção que sua subconsulta tem que retornar uma linha então talvez você deva usar
TOP (1)
ou alguma função de agregação para evitar possíveis erros.Ou
Você pode tentar
WHERE BusinessDate = CAST(GETDATE() -1 AS date)
, será no dia anterior.Por exemplo
2019-01-31
, levará2019-01-30
e2019-03-01
levará2019-02-28
, etc.Além disso, se você deseja incluir apenas os dias da semana (segunda a sexta), adicionando outra condição
AND DATEPART(dw, GETDATE()-1) NOT IN (7,1)