急求SQL

fyming 中南财经政法大学 侦察学  2019-01-18 10:39:22
CREATE TABLE #(
F1 VARCHAR(10),
F2 VARCHAR(10),
F3 INT)

INSERT INTO #(F1,F2,F3)
SELECT 'A','00',1 UNION ALL
SELECT 'A','01',1 UNION ALL
SELECT 'B','00',2 UNION ALL
SELECT 'C','00',3 UNION ALL
SELECT 'C','01',1

SELECT F1,F2,F3 FROM #
--------------------
DROP TABLE #

得到结果如下


希望得到结果是:


根据F1、F2对数据分组,并且F2分组后必须包括‘00’和‘01’两项,缺项则由0补齐

-------------------------------
SQL如何写?
...全文
10 点赞 收藏 2
写回复
2 条回复
二月十六 2019年01月18日
CREATE TABLE #(
F1 VARCHAR(10),
F2 VARCHAR(10),
F3 INT)

INSERT INTO #(F1,F2,F3)
SELECT 'A','00',1 UNION ALL
SELECT 'A','01',1 UNION ALL
SELECT 'B','00',2 UNION ALL
SELECT 'C','00',3 UNION ALL
SELECT 'C','01',1

SELECT t.F1,
t.F2,
ISNULL(#.F3, 0) F3
FROM
(
SELECT *
FROM
(SELECT DISTINCT F1 FROM #) t1 ,
(SELECT DISTINCT F2 FROM #) t2
) t
LEFT JOIN #
ON #.F1 = t.F1
AND #.F2 = t.F2
ORDER BY t.F1,t.F2
--------------------
DROP TABLE #


回复 点赞
dampce32 2019年01月18日
SELECT a.F1,b.F2,ISNULL(c.F3, 0) F3
FROM(
SELECT DISTINCT F1
FROM lab a) a
LEFT JOIN(
SELECT DISTINCT F2
FROM lab a) b ON 1 = 1
LEFT JOIN lab c ON a.F1 = c.F1 AND b.F2= c.F2
回复 点赞
发动态
发帖子
疑难问题
创建于2007-09-28

9308

社区成员

12.1w+

社区内容

MS-SQL Server 疑难问题
社区公告
暂无公告