有下面两个表,表一纳 税 人信息表(dj_nsrxx),表二是申 报 征 收 信息表(sb_zsxx):
dj_nsrxx
sb_zsxx
实际上两表的记录有上万个。现在如何根据几个特定的纳 税 人 名称来查询显示纳 税 识 别 号、纳 税 人 名称、2014年1-3月申 报日期内的增 值 税 合计、消 费 税 合计、企 业 所 得 税 合计以及税 额 总合计,另外如果 税 额 是负数的不参与合计。因为纳 税 人 名称来自其他部门提供,可能名称不标准例如提供的“大华语广告”,实际是dj_nsrxx中的大华语广告公司。假设其他部门提供的 纳 税 人名称为天宏有限公司、大力有限责任公司、喜洋洋超市、大华语广告,如何写SQL语句能显示上面的结果呢?请教各位大侠了,谢谢!
表一、表二中的字段都可以用字母表示例如纳 税 人 识别号可以用nsrsbh表示,写成汉字是让大家看得直观些。
------解决思路----------------------
SELECT模糊要用LIKE~
nsrsbh
,SUM(CASE zsxm_dm WHEN'01'THEN se END) Nsrmc
,SUM(CASE zsxm_dm WHEN'03'THEN se END) Zzshj
,SUM(CASE zsxm_dm WHEN'04'THEN se END) Qysdshj
,SUM(se) [合计]
FROM
CTE
WHERE
(nsrmc LIKE '%天宏有限公司%' OR nsrmc LIKE '%大力有限责任公司%' OR nsrmc LIKE '%喜洋洋超市%' OR nsrmc LIKE '%大华语广告%')
AND se>0
AND rkrq>='2014-01-01'
AND rkrq<'2014-04-01'
GROUP BY
nsrsbh
------解决思路----------------------
先把所有公司的各种税收求和都算出来。你要哪个公司的在看看就好了吗。看名称也一看就出来。
select * from (select 纳税人识别号, 征收项目,sum(税额) as sums from sb_zsxx as a
where 税额>0 and 申报日期 between '2014-01-01' and '2014-03-31'
group by grouping sets (纳税人识别号,征收项目),(纳税人识别号)) as a join dj_nsrxx as b
on a.纳税人识别号=b.纳税人识别号