Sql server 在sql server中获取上个月相对于当前月份的所有记录

Sql server 在sql server中获取上个月相对于当前月份的所有记录,sql-server,database,Sql Server,Database,我必须创建两个具有以下属性的表payment\u tbl和bill\u tbl payment_tbl (payment_ID int -> pk) bill_tbl (payment_ID int -> Fk ,bill_IssueDate date ,bill_status varchar ,bill_amount type int ) 因此,如果我想知道哪个付款ID在上个月相对于当前月份的账单状态为“未

我必须创建两个具有以下属性的表payment\u tbl和bill\u tbl

payment_tbl (payment_ID int -> pk)
bill_tbl (payment_ID int -> Fk
         ,bill_IssueDate date
         ,bill_status varchar
         ,bill_amount type int
         )

因此,如果我想知道哪个付款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)
选择p.payment\u ID
,b.应付金额
以b的身份提交账单
内部联接付款\u tbl作为p
在b.payment\u id=p.payment\u id上
其中b.账单状态='未支付'
和b.bill_IssueDate>=DATEADD(mm,DATEDIFF(mm,0,GETDATE())-1,0)
和b.bill_IssueDate
您需要查看当前和前几个月的第一个月,并将范围设置为该月

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)
选择
p、 付款ID,
b、 支付金额
从…起
账单为b
内部连接付款\u tbl作为p ON
b、 payment\u id=p.payment\u id
哪里
(b.账单状态=‘未支付’)
和b.bill_IssueDate=DATEADD(月,DATEDIFF(月,0,DATEADD(月,-1,getdate()),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子句,看看是否有这些月份的数据-我不认为这是您的日期范围

它什么也不返回,即使我的账单表有日期2017年2月2日12:00:00 AM,这是一个月前的日期。现在是2月,所以上个月是1月。@mjunaid您上个月说过想要的。2017年2月2日不是一个月,而是一天old@mjunaid这意味着什么?我犯了愚蠢的错误,在我的账单表中输入了错误的日期,现在我更正了它,现在我的所有查询都正常工作,为什么它会返回我的空表?这将只返回部分月份数据。。。不是上个月的整个月,这是什么wants@mjunaid-我不知道,还有什么不对劲,我想,你想要的记录真的在这里吗,状态正确吗?@Cato抱歉,我犯了早上10点以来最愚蠢的错误,现在我得到了解决方案你想把前一个月的时间恢复到月庆吗?这在2017年2月3日这样的日子里似乎很简单,但在2017年3月31日这样的日子里就不那么简单了,因为2月没有31日