求一条SQL语句,送分题!!!

u9085 2018-10-09 03:23:44
表一:companycg
companyno,companyname,bankno,bankname,cgcompanyno,cgcompanyname,companycgje
A 小米 A01 建行银行 C 红米 500
B 大米 A01 建行银行 D 紫米 400
B 大米 A01 建行银行 E 黄米 400
A 小米 B01 农业银行 C 红米 300
B 大米 B01 农业银行 D 紫米 400


求一条SQL语句,找出各行报送的数据中companyno,companyname和cgcompanyno,cgcompanyname但是companycgje不同,还有同一companyno,companyname 但是各行报送的记录数不一致的记录。

说通俗点就是报错或漏报的数据。



...全文
250 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
二月十六 版主 2018-10-10
  • 打赏
  • 举报
回复
--测试数据
if not object_id(N'Tempdb..#T') is null
drop table #T
Go
Create table #T([companyno] nvarchar(21),[companyname] nvarchar(22),[bankno] nvarchar(23),[bankname] nvarchar(24),[cgcompanyno] nvarchar(21),[cgcompanyname] nvarchar(22),[companycgje] int)
Insert #T
select N'A',N'小米',N'A01',N'建行银行',N'C',N'红米',500 union all
select N'B',N'大米',N'A01',N'建行银行',N'D',N'紫米',400 union all
select N'B',N'大米',N'A01',N'建行银行',N'E',N'黄米',400 union all
select N'A',N'小米',N'B01',N'农业银行',N'C',N'红米',300 union all
select N'B',N'大米',N'B01',N'农业银行',N'D',N'紫米',400 union all
select N'F',N'同仁',N'A01',N'建行银行',N'C',N'红米',500 union all
select N'F',N'同仁',N'B01',N'农业银行',N'C',N'红米',500
Go
--测试数据结束
SELECT * FROM (
SELECT
*,
CASE
WHEN
(
SELECT
COUNT(*)
FROM
#T b
WHERE a.companyno=b.companyno AND a.companyname=b.companyname
GROUP BY
companyno,
companyname
) <> 2
THEN '记录数不一致'
WHEN EXISTS
(
SELECT
*
FROM
#T b
WHERE
a.companyno = b.companyno
AND a.companyname = b.companyname
AND a.cgcompanyno = b.cgcompanyno
AND a.cgcompanyname = b.cgcompanyname
AND a.companycgje <> b.companycgje
)
THEN '金额错误'
ELSE
''
END AS jielun
FROM
#T a)t
WHERE t.jielun <>''


u9085 2018-10-09
  • 打赏
  • 举报
回复



引用 1 楼 sinat_28984567 的回复:
没看明白需求,对应结果是什么?


表一:companycg
companyno,companyname,bankno,bankname,cgcompanyno,cgcompanyname,companycgje
A 小米 A01 建行银行 C 红米 500
B 大米 A01 建行银行 D 紫米 400
B 大米 A01 建行银行 E 黄米 400
A 小米 B01 农业银行 C 红米 300
B 大米 B01 农业银行 D 紫米 400
F 同仁 A01 建行银行 C 红米 500
F 同仁 B01 农业银行 C 红米 500


求一条SQL语句,找出各行报送的数据中companyno,companyname和cgcompanyno,cgcompanyname但是companycgje不同,还有同一companyno,companyname 但是各行报送的记录数不一致的记录。

说通俗点就是数据是bankname报送的,通过相互校验,找出报错或漏报的数据。

结果:
companyno,companyname,bankno,bankname,cgcompanyno,cgcompanyname,companycgje,jielun
A 小米 A01 建行银行 C 红米 500 金额错误
B 大米 A01 建行银行 D 紫米 400 记录数不一致
B 大米 A01 建行银行 E 黄米 400 记录数不一致
A 小米 B01 农业银行 C 红米 300 金额错误
B 大米 B01 农业银行 D 紫米 400 记录数不一致


二月十六 版主 2018-10-09
  • 打赏
  • 举报
回复
没看明白需求,对应结果是什么?

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧