sql-server - SQL 查询确定增值税率

标签 sql-server sql-server-2005

我希望创建一个包含以下列的 3 列 VAT_Parameter 表:

VATID, VATRate, EffectiveDate

但是,我无法理解如何确定发票日期适用的增值税税率。

例如,如果表中填充有:

1, 17.5, 1/4/1991
2, 15, 1/1/2009
3, 20, 4/1/2011

例如,我有一张日期为 2010 年 4 月 5 日的发票,SQL 查询将如何选择该日期的正确增值税率?

最佳答案

select top 1 *
from VatRate
where EffectiveDate<=@InvoiceDate
order by EffectiveDate desc

或者,使用发票表

select id, invoicedate, rate
from
(
    select 
        inv.id, inv.invoicedate, vatrate.rate, ROW_NUMBER() over (partition by inv.id order by vatrate.effectivedate desc) rn
    from inv
        inner join vatrate
            on inv.invoicedate>=vatrate.effectivedate
) v     
where rn = 1
PS。税率变化时征收增值税的税率规则比发票日期更复杂。例如,供应日期也很重要。

关于sql-server - SQL 查询确定增值税率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13472701/

相关文章:

sql-server - 在报表生成器中使用两个以上的实体关系(SQL Server 2005)

sql-server-2005 - 如何在单个查询中从子表和父表中删除记录?

c# - Entity Framework 将 IP 以二进制形式保存到 SQL Server

sql-server - 在给定 SQL Server 中的存储过程参数的情况下,是否可以按任何列进行排序?

sql-server - Sql 多行合并为具有特定模式的单行

sql-server - 在 SQL Management Studio 中删除/更新之前确认?

sql - 为什么 'HASH JOIN' 或 'LOOP JOIN' 改进了这个存储过程?

sql-server - 插入的记录是否始终接收连续的标识值

mysql - 在 WHERE 子句中使用子查询结果

sql - SQL SERVER 2005如果是