求sql语句...

春风十里耶耶耶 2011-10-26 09:18:19

create table [Table1](
[name] nvarchar(10),[time] datetime,[Class] nvarchar(10))
INSERT INTO [Table1]([name],[time],[Class])VALUES('第一个','2011-10-24','A班')
INSERT INTO [Table1]([name],[time],[Class])VALUES('第一个','2011-10-24','B班')
INSERT INTO [Table1]([name],[time],[Class])VALUES('第二个','2011-10-24','A班')
INSERT INTO [Table1]([name],[time],[Class])VALUES('第二个','2011-10-24','B班')
INSERT INTO [Table1]([name],[time],[Class])VALUES('第三个','2011-10-24','A班')
INSERT INTO [Table1]([name],[time],[Class])VALUES('第五个','2011-10-24','A班')

INSERT INTO [Table1]([name],[time],[Class])VALUES('第四个','2011-10-23','A班')
INSERT INTO [Table1]([name],[time],[Class])VALUES('第五个','2011-10-23','B班')
go

select * from Table1 -----执行结果如下:
第一个 2011-10-24 00:00:00.000 A班
第一个 2011-10-24 00:00:00.000 B班
第二个 2011-10-24 00:00:00.000 A班
第二个 2011-10-24 00:00:00.000 B班
第三个 2011-10-24 00:00:00.000 A班
第五个 2011-10-24 00:00:00.000 A班
第四个 2011-10-23 00:00:00.000 A班
第五个 2011-10-23 00:00:00.000 B班



--想要得到的结果如下:
第一个 2011-10-24 00:00:00.000 A班
第一个 2011-10-24 00:00:00.000 B班
第二个 2011-10-24 00:00:00.000 A班
第二个 2011-10-24 00:00:00.000 B班
第三个 2011-10-24 00:00:00.000 A班
第三个 2011-10-24 00:00:00.000 B班 --添加
第五个 2011-10-24 00:00:00.000 A班
第五个 2011-10-24 00:00:00.000 B班 --添加
第四个 2011-10-23 00:00:00.000 A班
第四个 2011-10-23 00:00:00.000 B班 --添加
第五个 2011-10-23 00:00:00.000 A班 --添加
第五个 2011-10-23 00:00:00.000 B班


结果贴出来,也就一目了然...

...全文
101 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
--小F-- 2011-10-26
  • 打赏
  • 举报
回复
--简化一下 去掉连接

create table [Table1](
[name] nvarchar(10),[time] datetime,[Class] nvarchar(10))
INSERT INTO [Table1]([name],[time],[Class])VALUES('第一个','2011-10-24','A班')
INSERT INTO [Table1]([name],[time],[Class])VALUES('第一个','2011-10-24','B班')
INSERT INTO [Table1]([name],[time],[Class])VALUES('第二个','2011-10-24','A班')
INSERT INTO [Table1]([name],[time],[Class])VALUES('第二个','2011-10-24','B班')
INSERT INTO [Table1]([name],[time],[Class])VALUES('第三个','2011-10-24','A班')
INSERT INTO [Table1]([name],[time],[Class])VALUES('第五个','2011-10-24','A班')

INSERT INTO [Table1]([name],[time],[Class])VALUES('第四个','2011-10-23','A班')
INSERT INTO [Table1]([name],[time],[Class])VALUES('第五个','2011-10-23','B班')
go
select * into #t
from(
select
name,a.time,b.Class
from
((select distinct name,time from Table1)a cross join (select class from Table1)b )
group by
name,a.time,b.Class
)t
select * from #t
drop table Table1 ,#t

/*name time Class
---------- ----------------------- ----------
第二个 2011-10-24 00:00:00.000 A班
第二个 2011-10-24 00:00:00.000 B班
第三个 2011-10-24 00:00:00.000 A班
第三个 2011-10-24 00:00:00.000 B班
第四个 2011-10-23 00:00:00.000 A班
第四个 2011-10-23 00:00:00.000 B班
第五个 2011-10-23 00:00:00.000 A班
第五个 2011-10-23 00:00:00.000 B班
第五个 2011-10-24 00:00:00.000 A班
第五个 2011-10-24 00:00:00.000 B班
第一个 2011-10-24 00:00:00.000 A班
第一个 2011-10-24 00:00:00.000 B班

(12 行受影响)
*/
--小F-- 2011-10-26
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 dygaalove 的回复:]
引用 6 楼 fredrickhu 的回复:

SQL code
insert into
#tb
select
*
from
(上面那一串)t--这个t不能掉了


晕倒,小F骗人,这个方法不行,呜呜..

如果数据量小还可以,那么很多条数据呢,影响效率的... 况且这样做虽然是数据对了..
[/Quote]

插入的时候就不要order by 了

create table [Table1](
[name] nvarchar(10),[time] datetime,[Class] nvarchar(10))
INSERT INTO [Table1]([name],[time],[Class])VALUES('第一个','2011-10-24','A班')
INSERT INTO [Table1]([name],[time],[Class])VALUES('第一个','2011-10-24','B班')
INSERT INTO [Table1]([name],[time],[Class])VALUES('第二个','2011-10-24','A班')
INSERT INTO [Table1]([name],[time],[Class])VALUES('第二个','2011-10-24','B班')
INSERT INTO [Table1]([name],[time],[Class])VALUES('第三个','2011-10-24','A班')
INSERT INTO [Table1]([name],[time],[Class])VALUES('第五个','2011-10-24','A班')

INSERT INTO [Table1]([name],[time],[Class])VALUES('第四个','2011-10-23','A班')
INSERT INTO [Table1]([name],[time],[Class])VALUES('第五个','2011-10-23','B班')
go
select * into #t
from(
select
name,a.time,b.Class
from
((select distinct name,time from Table1)a cross join (select time,class from Table1)b )
where
a.time=b.time
group by
name,a.time,b.Class
)t
select * from #t
drop table Table1 ,#t

/*name time Class
---------- ----------------------- ----------
第二个 2011-10-24 00:00:00.000 A班
第二个 2011-10-24 00:00:00.000 B班
第三个 2011-10-24 00:00:00.000 A班
第三个 2011-10-24 00:00:00.000 B班
第四个 2011-10-23 00:00:00.000 A班
第四个 2011-10-23 00:00:00.000 B班
第五个 2011-10-23 00:00:00.000 A班
第五个 2011-10-23 00:00:00.000 B班
第五个 2011-10-24 00:00:00.000 A班
第五个 2011-10-24 00:00:00.000 B班
第一个 2011-10-24 00:00:00.000 A班
第一个 2011-10-24 00:00:00.000 B班

(12 行受影响)
*/
gold_water 2011-10-26
  • 打赏
  • 举报
回复
看看,午休。。。
稻庄 2011-10-26
  • 打赏
  • 举报
回复
有点道理
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 fredrickhu 的回复:]

SQL code
insert into
#tb
select
*
from
(上面那一串)t--这个t不能掉了
[/Quote]

晕倒,小F骗人,这个方法不行,呜呜..

如果数据量小还可以,那么很多条数据呢,影响效率的... 况且这样做虽然是数据对了..
--小F-- 2011-10-26
  • 打赏
  • 举报
回复
insert into
#tb
select
*
from
(上面那一串)t--这个t不能掉了
快溜 2011-10-26
  • 打赏
  • 举报
回复
create table [Table1](
[name] nvarchar(10),[time] datetime,[Class] nvarchar(10))
INSERT INTO [Table1]([name],[time],[Class])VALUES('第一个','2011-10-24','A班')
INSERT INTO [Table1]([name],[time],[Class])VALUES('第一个','2011-10-24','B班')
INSERT INTO [Table1]([name],[time],[Class])VALUES('第二个','2011-10-24','A班')
INSERT INTO [Table1]([name],[time],[Class])VALUES('第二个','2011-10-24','B班')
INSERT INTO [Table1]([name],[time],[Class])VALUES('第三个','2011-10-24','A班')
INSERT INTO [Table1]([name],[time],[Class])VALUES('第五个','2011-10-24','A班')

INSERT INTO [Table1]([name],[time],[Class])VALUES('第四个','2011-10-23','A班')
INSERT INTO [Table1]([name],[time],[Class])VALUES('第五个','2011-10-23','B班')
go

insert into [Table1]
select * from
(select distinct name,[time] from [Table1]) a,
(select distinct [class] from [Table1]) b
except
select * from [Table1]

select * from [Table1] order by
CHARINDEX(name,'第一个第二个第三个第四个第五个')

/*
name time Class
---------- ----------------------- ----------
第一个 2011-10-24 00:00:00.000 A班
第一个 2011-10-24 00:00:00.000 B班
第二个 2011-10-24 00:00:00.000 A班
第二个 2011-10-24 00:00:00.000 B班
第三个 2011-10-24 00:00:00.000 A班
第三个 2011-10-24 00:00:00.000 B班
第四个 2011-10-23 00:00:00.000 B班
第四个 2011-10-23 00:00:00.000 A班
第五个 2011-10-23 00:00:00.000 B班
第五个 2011-10-23 00:00:00.000 A班
第五个 2011-10-24 00:00:00.000 B班
第五个 2011-10-24 00:00:00.000 A班

(12 行受影响)
  • 打赏
  • 举报
回复
首先要谢谢LS的帮助,查询结果都是没问题的.

可否弄成利用insert添加不符合条件的语句,最后使用select * from Table1,就能查询到上面的结果..

谢谢各位..
  • 打赏
  • 举报
回复
LS的结果都很对.

可否弄成那种利用insert语句添加记录,得到这样的结果,你这样写,没有实际数据进去.

利用insert语句添加之后,直接select * from Table1 这样就能出结果...

谢谢各位..
--小F-- 2011-10-26
  • 打赏
  • 举报
回复
create table [Table1](
[name] nvarchar(10),[time] datetime,[Class] nvarchar(10))
INSERT INTO [Table1]([name],[time],[Class])VALUES('第一个','2011-10-24','A班')
INSERT INTO [Table1]([name],[time],[Class])VALUES('第一个','2011-10-24','B班')
INSERT INTO [Table1]([name],[time],[Class])VALUES('第二个','2011-10-24','A班')
INSERT INTO [Table1]([name],[time],[Class])VALUES('第二个','2011-10-24','B班')
INSERT INTO [Table1]([name],[time],[Class])VALUES('第三个','2011-10-24','A班')
INSERT INTO [Table1]([name],[time],[Class])VALUES('第五个','2011-10-24','A班')

INSERT INTO [Table1]([name],[time],[Class])VALUES('第四个','2011-10-23','A班')
INSERT INTO [Table1]([name],[time],[Class])VALUES('第五个','2011-10-23','B班')
go

select
name,a.time,b.Class
from
((select distinct name,time from Table1)a cross join (select time,class from Table1)b )
where
a.time=b.time
group by
name,a.time,b.Class
order by
CHARINDEX(name,'第一个第二个第三个第四个第五个')

drop table Table1

/*name time Class
---------- ----------------------- ----------
第一个 2011-10-24 00:00:00.000 A班
第一个 2011-10-24 00:00:00.000 B班
第二个 2011-10-24 00:00:00.000 A班
第二个 2011-10-24 00:00:00.000 B班
第三个 2011-10-24 00:00:00.000 A班
第三个 2011-10-24 00:00:00.000 B班
第四个 2011-10-23 00:00:00.000 A班
第四个 2011-10-23 00:00:00.000 B班
第五个 2011-10-23 00:00:00.000 A班
第五个 2011-10-23 00:00:00.000 B班
第五个 2011-10-24 00:00:00.000 A班
第五个 2011-10-24 00:00:00.000 B班

(12 行受影响)
*/
NBDBA 2011-10-26
  • 打赏
  • 举报
回复
select a.[name],a.[time],b.[Class]
from (
select distinct [name],[time]
from table1
) a cross join (
select distinct [Class]
from table1
) b

dqm12345678 2011-10-26
  • 打赏
  • 举报
回复
支持下~
中国风 2011-10-26
  • 打赏
  • 举报
回复
create table [Table1](
[name] nvarchar(10),[time] datetime,[Class] nvarchar(10))
INSERT INTO [Table1]([name],[time],[Class])VALUES('第一个','2011-10-24','A班')
INSERT INTO [Table1]([name],[time],[Class])VALUES('第一个','2011-10-24','B班')
INSERT INTO [Table1]([name],[time],[Class])VALUES('第二个','2011-10-24','A班')
INSERT INTO [Table1]([name],[time],[Class])VALUES('第二个','2011-10-24','B班')
INSERT INTO [Table1]([name],[time],[Class])VALUES('第三个','2011-10-24','A班')
INSERT INTO [Table1]([name],[time],[Class])VALUES('第五个','2011-10-24','A班')

INSERT INTO [Table1]([name],[time],[Class])VALUES('第四个','2011-10-23','A班')
INSERT INTO [Table1]([name],[time],[Class])VALUES('第五个','2011-10-23','B班')
go
INSERT [Table1]
SELECT
a.NAME,a.[time],b.[Class]
FROM
(select [name],[time]
from Table1
GROUP BY [name],[time]
HAVING COUNT(1)=1)a,
(SELECT [Class]='A班' UNION ALL SELECT [Class]='B班')b
WHERE
NOT EXISTS(SELECT 1 FROM Table1 WHERE [name]=a.[name] AND [time]=a.[time] AND [Class]=b.[Class])

27,579

社区成员

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

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