我尝试制作一个脚本来获取我在SQL中需要的查询,正是我尝试的是让帐户显示在指定月份内没有移动且您的余额低于2000美元但是我试图制作它在GROUP BY中,但没有让我知道如何划分那些没有移动帐户的客户,因为我的脚本是这样的:
DECLARE @FechaMovimiento VARCHAR(10)
SET @FechaMovimiento = '0000-00-00'
IF NOT EXISTS (SELECT * FROM [dbo].[CuentasBancarias] a
INNER JOIN [dbo].[Depositos] b
ON a.CuentaId = b.CuentaId
INNER JOIN [dbo].[Retiros] c
ON a.CuentaId = c.CuentaId
WHERE b.FechaMovimiento >= @FechaMovimiento and b.FechaMovimiento >= @FechaMovimiento
AND c.FechaMovimiento >= @FechaMovimiento and c.FechaMovimiento >= @FechaMovimiento
)
BEGIN
RAISERROR('No existen clientes sin movimientos en el mes')
END
IF EXISTS(SELECT * FROM [dbo].[CuentasBancarias] a
INNER JOIN [dbo].[Depositos] b
ON a.CuentaId = b.CuentaId
INNER JOIN [dbo].[Retiros] c
ON a.CuentaId = c.CuentaId
WHERE b.FechaMovimiento >= @FechaMovimiento and b.FechaMovimiento >= @FechaMovimiento
AND c.FechaMovimiento >= @FechaMovimiento and c.FechaMovimiento >= @FechaMovimiento
--AND a.Saldo < 2000
)
BEGIN
SELECT * FROM [dbo].[CuentasBancarias] WHERE Saldo <= 2000
END
这是不正确的,虽然数据显示,但如果客户没有移动呈现结果,但如果一个客户做出一些动作显示什么......我对此非常困惑。 ..我承认我没有很多SQL知识
我也试过这个查询:
SELECT cb.*
FROM [dbo].[CuentasBancarias] cb
WHERE NOT EXISTS (SELECT *
FROM [dbo].[Retiros] r
WHERE cb.CuentaId = r.CuentaId AND
r.FechaMovimiento >= '2016-02-01' AND
r.FechaMovimiento < '2016-03-01'
) AND
NOT EXISTS (SELECT *
FROM [dbo].[Depositos] d
WHERE cb.CuentaId = d.CuentaId AND
d.FechaMovimiento >= '2016-02-01' AND
d.FechaMovimiento < '2016-03-01'
)
AND
EXISTS (SELECT * FROM [dbo].[CuentasBancarias] WHERE Saldo < 2000)
表格顺序:
AccountBank
雷蒂罗/退出
矿床
答案 0 :(得分:1)
SELECT cb.*
FROM [dbo].[CuentasBancarias] cb
WHERE cb.Saldo < 2000
AND NOT EXISTS (SELECT *
FROM [dbo].[Retiros] r
WHERE cb.CuentaId = r.CuentaId AND
r.FechaMovimiento >= '2016-02-01' AND
r.FechaMovimiento < '2016-03-01'
) AND
NOT EXISTS (SELECT *
FROM [dbo].[Depositos] d
WHERE cb.CuentaId = d.CuentaId AND
d.FechaMovimiento >= '2016-02-01' AND
d.FechaMovimiento < '2016-03-01'
)