2016-02-29 173 views
1

我是SQL中的新手,因爲我需要的是讓帳戶只有存款並且在2月份沒有提款,但是我想不出一個腳本,可以讓我的需要,嘗試不同的,按組查詢,但不顯示我需要什麼:2016年2月僅有存款並且沒有提款的帳戶的腳本

爲了將表:

CuentasBancaria

cuentasbancaria

Retiros /取款

enter image description here

Depositos /存款

enter image description here

,我試圖與此腳本:

DECLARE @FechaDeterminado VARCHAR(10) 
SET @FechaDeterminado = '2016-02-01' 

IF EXISTS(SELECT a.FechaMovimiento FROM [dbo].[Retiros] a 
        INNER JOIN [dbo].[CuentasBancarias] b 
        ON a.CuentaId = b.CuentaId 
        WHERE a.FechaMovimiento >= @FechaDeterminado) 
BEGIN 
    RAISERROR('No hay clientes sin retiros en el mes',16,1) 
END 

IF NOT EXISTS(SELECT a.FechaMovimiento FROM [dbo].[Retiros] a 
        INNER JOIN [dbo].[CuentasBancarias] b 
        ON a.CuentaId = b.CuentaId 
        WHERE a.FechaMovimiento >= @FechaDeterminado) 
BEGIN 
     SELECT * FROM [dbo].[CuentasBancarias] a 
     INNER JOIN [dbo].[Depositos] b 
     ON a.CuentaId = b.CuentaId 
     WHERE FechaMovimiento >= @FechaDeterminado 
END 

b這是不正確的...因爲它顯示了沒有提款時的結果,但是至少在退出時顯示失敗,我想要的是獲得一個腳本或查詢來獲得只有沒有存款和提款的客戶在這個月裏

+0

在退出表上使用存入表的左連接和內部連接。 – artm

+0

嗯,你能告訴我劇本嗎?我是SQL的新手......你能幫我嗎? –

+0

'select * from accounts a left join deposit d on d.userid = a.id inner join withdraw w on w.userid = a.id' add the date condition。 – artm

回答

1

你不需要if這個。您可以使用WHERE子句執行此操作:

select cb.* 
from CuentasBancaria cb 
where not exists (select 1 
        from retiros r 
        where cb.CuentaId = r.CuentaId and 
         r.FechaMovimiento >= '2016-02-01' and 
         r.FechaMovimiento < '2016-03-01' 
       ) and 
     exists (select 1 
       from depositors d 
       where cb.CuentaId = d.CuentaId and 
        d.FechaMovimiento >= '2016-02-01' and 
        d.FechaMovimiento < '2016-03-01' 
      ); 
+0

非常感謝!!!!!!!!!! LOVE YA MAN –

相關問題