我必须使用两个表payment_tbl和bill_tbl以及以下属性
payment_tbl (payment_ID int -> pk)
bill_tbl (payment_ID int -> Fk
,bill_IssueDate date
,bill_status varchar
,bill_amount type int
)
所以如果我想知道哪个payment_ID有帐单状态'未支付'在上个月相对于当月,让现在月份是2017年2月我想知道在2017年1月谁没有支付比尔。
我尝试了以下查询,但它返回空列名称
SELECT p.payment_ID
,b.amount_To_Pay
FROM bill_tbl AS b
INNER JOIN payment_tbl AS p
ON b.payment_id = p.payment_ID
WHERE b.bill_status = 'Not Paid'
AND b.bill_IssueDate >= DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) - 1, 0)
AND b.bill_IssueDate < DATEADD(mm, DATEDIFF(mm, 0, GETDATE()) + 0, 0)
答案 0 :(得分:0)
您需要查看当前和前几个月的第一个月,并将范围设置为该值。
select
p.payment_ID,
b.amount_To_Pay
FROM
bill_tbl AS b
INNER JOIN payment_tbl AS p ON
b.payment_id = p.payment_ID
WHERE
(b.bill_status = 'Not Paid')
and b.bill_IssueDate < DATEADD(month, DATEDIFF(month, 0, getdate()), 0)
and b.bill_IssueDate >= DATEADD(month, DATEDIFF(month, 0, dateadd(month,-1,getdate())), 0)
答案 1 :(得分:0)
应该简单 -
SELECT p.payment_ID
,b.amount_To_Pay
FROM bill_tbl AS b
INNER JOIN payment_tbl AS p
ON b.payment_id = p.payment_ID
WHERE b.bill_status = 'Not Paid'
AND DATEDIFF(month, b.bill_IssueDate ,getdate()) = 1
你还有其他错误,你的日期范围还可以,摆脱一些WHERE条款,看看那些月份是否确实存在任何数据 - 我不认为这是你的日期范围