SQL 语句 没有数据补充一行, 该怎么写?

窗外雨寒 2013-08-20 11:14:13
drop table test
--已知:表有两个字段
create table test(colum1 varchar(255),colum2 varchar(255), colum3 int );

--数据
insert into test values('团队1','2013-1',1);
insert into test values('团队1','2013-2',1);
insert into test values('团队2','2013-1',1);
insert into test values('团队2','2013-2',5);
insert into test values('团队3','2013-3',3);
SELECT * FROM test
============
colum1 colum2 colum3
团队1 2013-1 1
团队1 2013-2 1
团队2 2013-1 1
团队2 2013-2 5
团队3 2013-3 3

显示格式如下==============================
colum1 colum2 colum3
团队1 2013-1 1
团队1 2013-2 1
团队1 2013-3 0
团队2 2013-1 1
团队2 2013-2 5
团队2 2013-3 0
团队3 2013-1 0
团队3 2013-2 0

团队3 2013-3 3
...全文
425 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
排山倒海呦 2013-09-29
  • 打赏
  • 举报
回复
  declare  @test table  (colum1 varchar(255),colum2  varchar(255), colum3 int );
  
  --数据
  insert into  @test values('团队1','2013-1',1);
  insert into  @test values('团队1','2013-2',1);
  insert into  @test values('团队2','2013-1',1);
  insert into  @test values('团队2','2013-2',5);
  insert into  @test values('团队3','2013-3',3);
  select m.colum1 ,sub.colum2,isnull(num.colum3,0) colum3 from 
  (select distinct colum1 from @test m) m
   cross join
  (select distinct colum2 from @test) sub
  left join @test num on num.colum1=m.colum1 and num.colum2=sub.colum2
xxfvba 2013-08-21
  • 打赏
  • 举报
回复
shawn 也是大牛啊,学习了。
發糞塗牆 2013-08-20
  • 打赏
  • 举报
回复
你只能给20分
窗外雨寒 2013-08-20
  • 打赏
  • 举报
回复
N人,谢谢 “wwwwgou”,我想问下,有没有遇到结贴的时候,反馈“与总分不符合”
Shawn 2013-08-20
  • 打赏
  • 举报
回复
 drop table test
  --已知:表有两个字段
  create table  test(colum1 varchar(255),colum2  varchar(255), colum3 int );
  
  --数据
  insert into  test values('团队1','2013-1',1);
  insert into  test values('团队1','2013-2',1);
  insert into  test values('团队2','2013-1',1);
  insert into  test values('团队2','2013-2',5);
  insert into  test values('团队3','2013-3',3);

DECLARE @count INT
SET @count = 3	--补全至几行

SELECT a.colum1, b.number, colum3=ISNULL(c.colum3,0)
FROM (SELECT DISTINCT colum1 FROM test) a
CROSS JOIN
(SELECT number='2013-'+LTRIM(number+1) FROM master..spt_values
WHERE type = 'p' AND number < @count) b
LEFT JOIN test c
ON a.colum1=c.colum1
	AND b.number = c.colum2
/*
colum1	number	colum3
团队1	2013-1	1
团队1	2013-2	1
团队1	2013-3	0
团队2	2013-1	1
团队2	2013-2	5
团队2	2013-3	0
团队3	2013-1	0
团队3	2013-2	0
团队3	2013-3	3
*/
nonoqiqi 2013-08-20
  • 打赏
  • 举报
回复
为什么 逻辑思维都这么流逼 看到 (SELECT number='2013-'+LTRIM(number+1) FROM master..spt_values WHERE type = 'p' AND number < @count) b 这句我感觉好凌乱啊。 消化不了了

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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