表 t1 中 列 abc cba
100 aaa
101 bbb
555 ccc
777 aaa
.
.
.
.要求生成的表 列 abc cba mmm
× × 1
× × 1
× × 1
× × 2
× × 2
× × 2
× × 3
× × 3
.
.
.
.
. abc 和 cba 内容不变 mmm 每3个加一
100 aaa
101 bbb
555 ccc
777 aaa
.
.
.
.要求生成的表 列 abc cba mmm
× × 1
× × 1
× × 1
× × 2
× × 2
× × 2
× × 3
× × 3
.
.
.
.
. abc 和 cba 内容不变 mmm 每3个加一
解决方案 »
- SQL语句请教!
- 问个简单问题Function返回table时为什么不能用order by?
- 为什么打开某个页面的时候cpu的使用率就达到100%,而且当页面打开或者都关掉了cpu的使用率还是100%,过了5分钟左右才开始降下来??在线
- 求SQL语句,公式计算
- 这样的数据怎么获取想要的部分数据
- 求一关于分组的SQL语句的写法
- 再次提问。如何返回表的主键列的列名。不要SP_PKEYS. (在线等待)
- 关于SQL查询分析器整个数据库某个字符
- 难度越来越大:关于MFC和SQL Server7.0的怪问题,高手请进
- 怎样删除3小时以前的数据?
- 睡觉前最后一问:求一个多表查询SQL语句!
- 如何把小数点转为百分数
(abc Int,
cba Varchar(10))
Insert t1 Select 100, 'aaa'
Union All Select 101, 'bbb'
Union All Select 555, 'ccc'
Union All Select 777, 'ddd'
Union All Select 778, 'eee'
Union All Select 787, 'fff'
Union All Select 888, 'ggg'
GO
Select *, (Select Count(*) From t1 Where abc < A.abc) / 3 + 1 As mmm From t1 A
GO
Drop Table t1
--Result
/*
abc cba mmm
100 aaa 1
101 bbb 1
555 ccc 1
777 ddd 2
778 eee 2
787 fff 2
888 ggg 3
*/
insert temp0614 select 'ay','jk'
union all select 'sw','jm'
union all select 'xx','ef'
union all select 'xs','qa'
union all select 'tt','ws'
union all select 'hj','ed'
union all select 'kl','rf'
union all select 'op','tg'
union all select 'gf','yh'
union all select 'dr','ik'
union all select 'ef','ok'
union all select 'rt','yu'select * from temp0614
alter table temp0614 add idencol int identity(1,1)
alter table temp0614 add mm intupdate temp0614 set mm=(idencol+2)/3alter table temp0614 drop column idencolselect * from temp0614drop table temp0614
数学 三.3
数学 三.1
null null
null null
科学 三.3
null null
null null
null null
null null
数学 三.1
数学 三.3
null null
null null
null null
科学 三.3
null null
null null
null null
null null
null null
数学 三.3
数学 三.1
null null
null null
科学 三.1
null null
null null
null null
null null
数学 三.3
null null
数学 三.1
体健 三.3
null null
null null
null null
null null
null null
null null
null null
数学 三.1
数学 三.3
null null
null null
科学 三.1
null null
null null
null null
null null
null null
null null
null null
null null
null null
null null
null null
null null
null null
null null
结束
空也是数据 一共60条 ,我想把它变成课程表 周一 周二 周三 周四 周五 周六
1 null null
2 数学 三.3
3 数学 三.1
4 null null
5 null null
6 科学 三.3
7 null null
8 null null
9 null null
10 null null将这个表填满
INSERT INTO #T1
SELECT 101,'A' UNION ALL
SELECT 102,'B' UNION ALL
SELECT 104,'we' UNION ALL
SELECT 101,'tye' UNION ALL
SELECT 201,'we' UNION ALL
SELECT 201,'3e' UNION ALL
SELECT 241,'3e' UNION ALL
SELECT 251,'sfe' UNION ALL
SELECT 271,'we' UNION ALL
SELECT 328,'DD' SELECT IDENTITY(int, 3,1) [id],*,CAST(NULL AS int) mmm INTO #T2 FROM #T1
UPDATE #T2 SET mmm=[id]/3
SELECT * FROM #T2
DROP TABLE #T1,#T2
insert #test select 'aaa','A'
union all select 'bbb','C'
union all select 'ccc','C'
union all select 'aaa','C'
union all select 'bbb','C'
union all select 'ccc','C'
union all select 'aaa','C'
union all select 'bbb','C'
union all select 'ccc','C'SELECT *,Identity(Int,1,1) As RowIndex INTO #TEST1 FROM #TEST
SELECT XM,LX,(ROWINDEX-1)/3+1 FROM #TEST1
(Select Count(*) From t1 Where abc < A.abc) / 10 + 1 As mmm
(Select Count(*) From t1 Where abc < A.abc) / 6+ 1 As ddd
into #t
From t1 A
declare @sql varchar(8000)
set @sql = 'select mmm ,'
select @sql = @sql + 'max(case [ddd] when '''+ddd+'''
then abc+cba end) as '''+ddd+''','
from (select distinct mmm from #t) as a
select @sql = left(@sql,len(@sql)-1) + ' from #t group by mmm '
exec(@sql)
其实 我现在的数据是这样的:
开始:
数学 三.3
数学 三.1
科学 三.3
-----------------------------
思想,换成交叉表.
null null 1 1
数学 三.3 1 1
数学 三.1 1 1
null null 1 1
null null 1 1
科学 三.3 1 1
null null 1 2
null null 1 2
null null 1 2
null null 2 2
数学 三.1 2 2
数学 三.3 2 2
null null 2 3
null null 2 3
null null 2 3
科学 三.3 2 3
null null 2 3
null null 2 3
null null 2 4
null null 3
null null 3
数学 三.3 3
数学 三.1 3
null null 3
(A Nvarchar(20),
B Nvarchar(20))
Insert TEST Select null, null
Union All Select N'数学', '三.3'
Union All Select N'数学', '三.1'
Union All Select null, null
Union All Select null, null
Union All Select N'科学', '三.3'
Union All Select null, null
Union All Select null, null
Union All Select null, null
Union All Select null, null
Union All Select N'数学', '三.1'
Union All Select N'数学', '三.3'
Union All Select null, null
Union All Select null, null
Union All Select null, null
Union All Select N'科学', '三.3'
Union All Select null, null
Union All Select null, null
Union All Select null, null
Union All Select null, null
Union All Select null, null
Union All Select N'数学', '三.3'
Union All Select N'数学', '三.1'
Union All Select null, null
Union All Select null, null
Union All Select N'科学', '三.1'
Union All Select null, null
Union All Select null, null
Union All Select null, null
Union All Select null, null
Union All Select N'数学', '三.3'
Union All Select null, null
Union All Select N'数学', '三.1'
Union All Select N'体健', '三.3'
Union All Select null, null
Union All Select null, null
Union All Select null, null
Union All Select null, null
Union All Select null, null
Union All Select null, null
Union All Select null, null
Union All Select N'数学', '三.1'
Union All Select N'数学', '三.3'
Union All Select null, null
Union All Select null, null
Union All Select N'科学', '三.1'
Union All Select null, null
Union All Select null, null
Union All Select null, null
Union All Select null, null
Union All Select null, null
Union All Select null, null
Union All Select null, null
Union All Select null, null
Union All Select null, null
Union All Select null, null
Union All Select null, null
Union All Select null, null
Union All Select null, null
Union All Select null, null
GO
--Select * From TESTSelect ID = Identity(Int, 0, 1), * Into #T From TESTSelect
MAX(Case When ID / 10 = 0 Then A Else null End) As 周一,
MAX(Case When ID / 10 = 1 Then A Else null End) As 周二,
MAX(Case When ID / 10 = 2 Then A Else null End) As 周三,
MAX(Case When ID / 10 = 3 Then A Else null End) As 周四,
MAX(Case When ID / 10 = 4 Then A Else null End) As 周五,
MAX(Case When ID / 10 = 5 Then A Else null End) As 周六
From
#T
Group By ID % 10
GO
Drop Table #TDrop Table TEST
GO
--Result
/*
周一 周二 周三 周四 周五 周六
NULL 数学 NULL 数学 NULL NULL
数学 数学 数学 NULL 数学 NULL
数学 NULL 数学 数学 数学 NULL
NULL NULL NULL 体健 NULL NULL
NULL NULL NULL NULL NULL NULL
科学 科学 科学 NULL 科学 NULL
NULL NULL NULL NULL NULL NULL
NULL NULL NULL NULL NULL NULL
NULL NULL NULL NULL NULL NULL
NULL NULL NULL NULL NULL NULL
*/