日期:2014-05-17 浏览次数:20486 次
use tempdb
go
--主表A
if not OBJECT_ID('tempdb..#A') IS NULL
drop table #A
CREATE TABLE #A(Auid int)
INSERT INTO #A(Auid)
SELECT 1 UNION ALL
SELECT 2 UNION ALL
SELECT 3 UNION ALL
SELECT 4
GO
--从表B
if not OBJECT_ID('tempdb..#B') IS NULL
drop table #B
CREATE TABLE #B(Auid int,B1 varchar(10) null)
INSERT INTO #B(Auid,B1)
SELECT 1,'' UNION ALL
SELECT 2,'' UNION ALL
SELECT 2,'A' UNION ALL
SELECT 3,'B' UNION ALL
SELECT 3,'A'
--SELECT 1,' ' UNION ALL(暂不考虑,也视为无记录)
--SELECT 1,null UNION ALL(同上)
--SELECT 2,null UNION ALL(同上)
--要的效果结果(希望效率比较优化的)
/*
Auid B1
-------------
1 0 --A中的1在B中没有正常记录
2 1 --A中的1在B中有1个记录
3 2 --A中的1在B中有两个记录
4 0 --A中的1在B中没有记录
*/
SELECT a.Auid ,
ISNULL(b1, 0) b1
FROM #a a
LEFT JOIN ( SELECT Auid ,
COUNT(1) b1
FROM #b
WHERE b1 <> ''
GROUP BY Auid
) b ON a.Auid = b.Auid