具有相同数据的sql查询结果
早上好,伙计们,我已经写了一个SQL代码具有相同数据的sql查询结果,sql,Sql,早上好,伙计们,我已经写了一个SQL代码 Select if(Tax = 0,amount,0.00) as zerotax, if(Date < '2018-04-01',amount,0.00) as xivVat, if(Date >= '2018-04-01',amount,0.00) as xvVat, account, reference, paiddate, rep, amount, amount_due, code, dat
Select if(Tax = 0,amount,0.00) as zerotax,
if(Date < '2018-04-01',amount,0.00) as xivVat,
if(Date >= '2018-04-01',amount,0.00) as xvVat,
account, reference, paiddate, rep, amount, amount_due, code, date into
"Memory\Temp"
from debttran
where code in ('IN','CN') and (PaidDate Between '2018-01-13' and '2018-08-13')
order by PaidDate ascending
选择(税=0,金额,0.00)作为零税,
如果(日期<'2018-04-01',金额0.00)作为增值税,
如果(日期>='2018-04-01',金额,0.00)为xvVat,
账户、参考、付款日期、代表、金额、到期金额、代码、日期
“内存\Temp”
来自Debtran
其中,代码in('in','CN')和(日期介于'2018-01-13'和'2018-08-13'之间)
按配对升序排序
基本上,代码所做的是从没有任何税收的发票中获取数据,然后从4月1日之前由于增值税变化而开具发票的发票中获取数据,然后从4月1日及之后开具发票的发票中获取数据
当我运行代码时,它工作得非常完美,但唯一的问题是当在xixVat或xvVat上也会显示on zerotax列AMENT if时
我如何编写代码来基本上检查它是否相同并减去它
SQL结果:
我认为您可以更改您的
语句,如果
语句:
if(Date < '2018-04-01' AND Tax > 0,amount,0.00) as xivVat,
if(Date >= '2018-04-01' AND Tax > 0,amount,0.00) as xvVat,
if(日期<'2018-04-01',税费>0,金额,0.00)作为增值税,
如果(日期>='2018-04-01'且税费>0,金额为0.00)为xvVat,
这将防止这些字段在未缴纳税款时显示值。我不确定是否完全理解您试图应用的逻辑,但您可以使用如下用例:
Select
**case
when if(Date < '2018-04-01',amount,0.00) < if(Date >= '2018-04-01',amount,0.00)
then if(Date < '2018-04-01',amount,0.00) --choose what to show in this case, it can be the difference between the 2 columns
else if(Date >= '2018-04-01',amount,0.00) --Same is here
end as FinalVat**,
if(Date < '2018-04-01',amount,0.00) as xivVat,
if(Date >= '2018-04-01',amount,0.00) as xvVat
from
选择
**案例
当if(日期<'2018-04-01',金额0.00)='2018-04-01',金额0.00)
然后,如果(日期<'2018-04-01',金额,0.00)--选择在本例中显示的内容,则可以是两列之间的差异
否则,如果(日期>='2018-04-01',金额,0.00)--此处相同
以FinalVat结束**,
如果(日期<'2018-04-01',金额0.00)作为增值税,
如果(日期>='2018-04-01',金额,0.00)为xvVat
从…起
我不确定在每种情况下都要显示什么。SQL中没有
if
。您使用的是哪种DBMs产品?您好,我使用的是dbsys