select *
from (
SELECT TA001,TA002,SUM(TA003) AS TA003
FROM TA
WHERE TA002='200902'
GROUP BY TA001,TA002
except
SELECT TB001,TB002,SUM(TB004) AS TB004
FROM TB
WHERE TB002='200902'
GROUP BY TB001,TB002 ) a
union
select * from
(SELECT TB001,TB002,SUM(TB004) AS TB004
FROM TB
WHERE TB002='200902'
GROUP BY TB001,TB002
except
SELECT TA001,TA002,SUM(TA003) AS TA003
FROM TA
WHERE TA002='200902'
GROUP BY TA001,TA002 ) b
from (
SELECT TA001,TA002,SUM(TA003) AS TA003
FROM TA
WHERE TA002='200902'
GROUP BY TA001,TA002
except
SELECT TB001,TB002,SUM(TB004) AS TB004
FROM TB
WHERE TB002='200902'
GROUP BY TB001,TB002 ) a
union
select * from
(SELECT TB001,TB002,SUM(TB004) AS TB004
FROM TB
WHERE TB002='200902'
GROUP BY TB001,TB002
except
SELECT TA001,TA002,SUM(TA003) AS TA003
FROM TA
WHERE TA002='200902'
GROUP BY TA001,TA002 ) b
解决方案 »
- 如何写一个触发器
- 理解有问题???关于删除日志文件
- 汇总问题
- 单词表中一共有7万个词,我怎样快速在某文章字段中查找所有词出现的次数呢?
- 厚着脸皮,在这里问一个在Excel里类似分组统计的问题?
- 关于触发器 在线求救
- select top 100 * from table1 order by column1, 先选择前100 个还是先排序?
- 复合查询语句问题
- sql2000中,可以用企业管理器创建表但无法用create table命令创建表,什么原因?
- 疑惑:ERP中求入库数量与发料数量,二表联合在一起的SQL语句
- SQL函数最长字符4000如何解决?
- 请教从外网访问VF+SQL(前台+后台)形式的程序。
用CheckSum()最简单:select * from
(
SELECT TA001,TA002,SUM(TA003) AS TA003
FROM TA
WHERE TA002='200902'
GROUP BY TA001,TA002
) a where checksum(*) not in (select checksum(*) from
(
SELECT TB001 ta001,TB002 ta002,SUM(TB004) AS Ta003
FROM TB
WHERE TB002='200902'
GROUP BY TB001,TB002
)
B)select m.* from
(
SELECT TA001,TA002,SUM(TA003) AS TA003
FROM TA
WHERE TA002='200902'
GROUP BY TA001,TA002
) m where not exists(select 1 from
(
SELECT TB001,TB002,SUM(TB004) AS TB004
FROM TB
WHERE TB002='200902'
GROUP BY TB001,TB002
) n
where n.tb001 = m.ta001 and n.tb002 = m.ta002 and n.tb004 = m.ta003
)
union all
select m.* from
(
SELECT TB001,TB002,SUM(TB004) AS TB004
FROM TB
WHERE TB002='200902'
GROUP BY TB001,TB002
) m where not exists (select 1 from
(
SELECT TA001,TA002,SUM(TA003) AS TA003
FROM TA
WHERE TA002='200902'
GROUP BY TA001,TA002
) n where n.ta001 = m.tb001 and n.ta002 = m.tb002 and n.ta003 = m.tb004
)
select TA001,TA002,TA003 ,TB001,TB002, TB004
from
(SELECT TA001,TA002,SUM(TA003) AS TA003
FROM TA
WHERE TA002='200902'
GROUP BY TA001,TA002 ) as T1
full join
(SELECT TB001,TB002,SUM(TB004) AS TB004
FROM TB
WHERE TB002='200902'
GROUP BY TB001,TB002 ) as T2
on T1.TA001=T2.TB001 and T1.TA002=T2.TB002 and T1.TA003 =T2.TB004
where TA001 is null or TB001 is null
试过你的方法,觉得能基本达到要求,就是觉得能不能将TA001=TB001与TA002=TB002相同的值放到同一行,而不是显示NULL!