Columns1,Columns2
1 ,1
2 ,2
14 ,14
5 ,5
6 ,6
7 ,7
8 ,8
9 ,9
10 ,10
11 ,11
12 ,12
13 ,13
3 ,3
7 ,7
8 ,8
现在要得到的结果是:
5;9;13;14
n=[表的总行数\4]
也就是按Columns2的顺序排列
1,2,3,5,6,7,8,9,10,11,12,13,14
取出第4*1,第4*2...第4*n行,第n行Coulmns2的值.
那么该怎么做呢?
多谢了!
22 个解决方案
#1
-- sql 2005
SELECT Columns1,Columns2
FROM(
SELECT Columns1,Columns2,
row = ROW_NUMBER() OVER(ORDER BY Columns2)
FROM A
)AA
WHERE (row - 1)%4 = 0
SELECT Columns1,Columns2
FROM(
SELECT Columns1,Columns2,
row = ROW_NUMBER() OVER(ORDER BY Columns2)
FROM A
)AA
WHERE (row - 1)%4 = 0
#2
--没有看见顺序排列在哪里
--如果没有标准递增序列,用下面语句
select id=identity(int,1,1),* into # from tableA
select columns1,columns2
from #
where id%5=4
--如果没有标准递增序列,用下面语句
select id=identity(int,1,1),* into # from tableA
select columns1,columns2
from #
where id%5=4
#3
再附加一句:
Columns是惟一的!
Columns是惟一的!
#4
-- Columns是惟一的!
-- 则sql 2000可以用
SELECT Columns1,Columns2
FROM(
SELECT Columns1,Columns2,
row = (
SELECT COUNT(*) FROM A A1
WHERE A1.Columns2 < A.Columns2
OR A1.Columns2 = A.Columns2 AND A1.Columns1 <= A.Columns1)
FROM A
)AA
WHERE (row - 1)%4 = 0
-- 则sql 2000可以用
SELECT Columns1,Columns2
FROM(
SELECT Columns1,Columns2,
row = (
SELECT COUNT(*) FROM A A1
WHERE A1.Columns2 < A.Columns2
OR A1.Columns2 = A.Columns2 AND A1.Columns1 <= A.Columns1)
FROM A
)AA
WHERE (row - 1)%4 = 0
#5
-- have a try!
select *
from #tableA a
where (select count(*)+1
from #tableA
where Columns2<a.Columns2)%4=0
select *
from #tableA a
where (select count(*)+1
from #tableA
where Columns2<a.Columns2)%4=0
#6
估计一下你的数据表有多少条记录,或者直接查询一下表有多少条记录。
然后生成一个临时表,假设有990条记录
select top 1000 identity(int) id into #t from sysobjects,syscolumns
--这里的top值大于你的记录数就可以了。如果你表中记录数够多,就cross join来生成#t
select a.* from TableA a
inner join #t b
on b.id%4=1 and a.id=(select count(1) from TableA x where x.Columns2<=a.Columns)
楼主的意思我猜大体是这样,具体是按col1 还是col2没太看明白,写法就是这样了,没测试,可能有手误。
然后生成一个临时表,假设有990条记录
select top 1000 identity(int) id into #t from sysobjects,syscolumns
--这里的top值大于你的记录数就可以了。如果你表中记录数够多,就cross join来生成#t
select a.* from TableA a
inner join #t b
on b.id%4=1 and a.id=(select count(1) from TableA x where x.Columns2<=a.Columns)
楼主的意思我猜大体是这样,具体是按col1 还是col2没太看明白,写法就是这样了,没测试,可能有手误。
#7
怎么搞的,每次多打几个字,发上来就有一堆回贴了,看来我要连习一下打字速度了
#8
select IDENTITY(int, 1,1) as myid,column1,column2 into #strack from table1
order by column2
select * from #strack
where myid%4=0
这个是一个朋友写得,我也放上去吧!
大家都可以有个参考
order by column2
select * from #strack
where myid%4=0
这个是一个朋友写得,我也放上去吧!
大家都可以有个参考
#9
select IDENTITY(int, 1,1) as myid,column1,column2 into #strack from table1
order by column2
select * from #strack
where myid%4=0
kentyshang的返回值是:5,8,11
-- Columns是惟一的!
-- 则sql 2000可以用
SELECT Columns1,Columns2
FROM(
SELECT Columns1,Columns2,
row = (
SELECT COUNT(*) FROM A A1
WHERE A1.Columns2 < A.Columns2
OR A1.Columns2 = A.Columns2 AND A1.Columns1 <= A.Columns1)
FROM A
)AA
WHERE (row - 1)%4 = 0
邹建你的返回值是:
1,6,12,8
select id=identity(int,1,1),* into # from tableA
select columns1,columns2
from #
where id%5=4
LouisXIV(夜游神) ,你的返回值是:
5,10,7
select *
from #tableA a
where (select count(*)+1
from #tableA
where Columns2<a.Columns2)%4=0
mschen(Co-ok)你的返回值是:
5,8,11,8
所以没有一个是正确的,哈哈!
大家再看一下了!
还有一个要问的是邹建:
row = ROW_NUMBER() OVER(ORDER BY Columns2)
是什么意思呢!
多谢,多谢!
order by column2
select * from #strack
where myid%4=0
kentyshang的返回值是:5,8,11
-- Columns是惟一的!
-- 则sql 2000可以用
SELECT Columns1,Columns2
FROM(
SELECT Columns1,Columns2,
row = (
SELECT COUNT(*) FROM A A1
WHERE A1.Columns2 < A.Columns2
OR A1.Columns2 = A.Columns2 AND A1.Columns1 <= A.Columns1)
FROM A
)AA
WHERE (row - 1)%4 = 0
邹建你的返回值是:
1,6,12,8
select id=identity(int,1,1),* into # from tableA
select columns1,columns2
from #
where id%5=4
LouisXIV(夜游神) ,你的返回值是:
5,10,7
select *
from #tableA a
where (select count(*)+1
from #tableA
where Columns2<a.Columns2)%4=0
mschen(Co-ok)你的返回值是:
5,8,11,8
所以没有一个是正确的,哈哈!
大家再看一下了!
还有一个要问的是邹建:
row = ROW_NUMBER() OVER(ORDER BY Columns2)
是什么意思呢!
多谢,多谢!
#10
在多添加一句是我表述不清的关系:
table A表结构:
Columns1 ID (自动生成)
Columns2 INT(惟一的)
table A表结构:
Columns1 ID (自动生成)
Columns2 INT(惟一的)
#11
没有一个正确的,看来我的也错了。
#12
to lz
尔所谓
Columns2 INT(惟一的)
----------------------
可确定是唯一?望自行检讨数据在先
尔所谓
Columns2 INT(惟一的)
----------------------
可确定是唯一?望自行检讨数据在先
#13
to lz
select *
from #tableA a
where (select count(*)+1
from #tableA
where Columns2<a.Columns2)%4=0
mschen(Co-ok)你的返回值是:
5,8,11,8
-------------------
以此观之,尔表中必存重复数据
select *
from #tableA a
where (select count(*)+1
from #tableA
where Columns2<a.Columns2)%4=0
mschen(Co-ok)你的返回值是:
5,8,11,8
-------------------
以此观之,尔表中必存重复数据
#14
是呀!
最后一行多余了!
实在不好意思!
我也是刚才测试数据的时候才发现的!
道歉!道歉!
最后一行多余了!
实在不好意思!
我也是刚才测试数据的时候才发现的!
道歉!道歉!
#15
select JRNUM from #TB where JRNUM % 4=0
的时候出现错误:
Server: Msg 206, Level 16, State 2, Line 1
Operand type *: int is incompatible with void type
Server: Msg 8117, Level 16, State 1, Line 1
Operand data type numeric is invalid for modulo operator.
CREATE TABLE #TB(
JRNUM numeric(9) NULL)
要怎么修改呢!
多谢!多谢~
的时候出现错误:
Server: Msg 206, Level 16, State 2, Line 1
Operand type *: int is incompatible with void type
Server: Msg 8117, Level 16, State 1, Line 1
Operand data type numeric is invalid for modulo operator.
CREATE TABLE #TB(
JRNUM numeric(9) NULL)
要怎么修改呢!
多谢!多谢~
#16
CREATE TABLE #TB(
JRNUM INT NULL)
JRNUM INT NULL)
#17
select JRNUM from #TB where Convert(int,JRNUM) % 4=0
也可以呢!
谢谢大家!
我的问题解决了!
感谢大家!
我结贴了!
也可以呢!
谢谢大家!
我的问题解决了!
感谢大家!
我结贴了!
#18
再次感谢了!哈哈
#19
#20
这个需求怪怪的……
#21
mark
#22
select JRNUM from #TB where Convert(int,JRNUM) % 4=0
我把1,2,3行数据删除掉,这个还准?????呵呵
我把1,2,3行数据删除掉,这个还准?????呵呵
#1
-- sql 2005
SELECT Columns1,Columns2
FROM(
SELECT Columns1,Columns2,
row = ROW_NUMBER() OVER(ORDER BY Columns2)
FROM A
)AA
WHERE (row - 1)%4 = 0
SELECT Columns1,Columns2
FROM(
SELECT Columns1,Columns2,
row = ROW_NUMBER() OVER(ORDER BY Columns2)
FROM A
)AA
WHERE (row - 1)%4 = 0
#2
--没有看见顺序排列在哪里
--如果没有标准递增序列,用下面语句
select id=identity(int,1,1),* into # from tableA
select columns1,columns2
from #
where id%5=4
--如果没有标准递增序列,用下面语句
select id=identity(int,1,1),* into # from tableA
select columns1,columns2
from #
where id%5=4
#3
再附加一句:
Columns是惟一的!
Columns是惟一的!
#4
-- Columns是惟一的!
-- 则sql 2000可以用
SELECT Columns1,Columns2
FROM(
SELECT Columns1,Columns2,
row = (
SELECT COUNT(*) FROM A A1
WHERE A1.Columns2 < A.Columns2
OR A1.Columns2 = A.Columns2 AND A1.Columns1 <= A.Columns1)
FROM A
)AA
WHERE (row - 1)%4 = 0
-- 则sql 2000可以用
SELECT Columns1,Columns2
FROM(
SELECT Columns1,Columns2,
row = (
SELECT COUNT(*) FROM A A1
WHERE A1.Columns2 < A.Columns2
OR A1.Columns2 = A.Columns2 AND A1.Columns1 <= A.Columns1)
FROM A
)AA
WHERE (row - 1)%4 = 0
#5
-- have a try!
select *
from #tableA a
where (select count(*)+1
from #tableA
where Columns2<a.Columns2)%4=0
select *
from #tableA a
where (select count(*)+1
from #tableA
where Columns2<a.Columns2)%4=0
#6
估计一下你的数据表有多少条记录,或者直接查询一下表有多少条记录。
然后生成一个临时表,假设有990条记录
select top 1000 identity(int) id into #t from sysobjects,syscolumns
--这里的top值大于你的记录数就可以了。如果你表中记录数够多,就cross join来生成#t
select a.* from TableA a
inner join #t b
on b.id%4=1 and a.id=(select count(1) from TableA x where x.Columns2<=a.Columns)
楼主的意思我猜大体是这样,具体是按col1 还是col2没太看明白,写法就是这样了,没测试,可能有手误。
然后生成一个临时表,假设有990条记录
select top 1000 identity(int) id into #t from sysobjects,syscolumns
--这里的top值大于你的记录数就可以了。如果你表中记录数够多,就cross join来生成#t
select a.* from TableA a
inner join #t b
on b.id%4=1 and a.id=(select count(1) from TableA x where x.Columns2<=a.Columns)
楼主的意思我猜大体是这样,具体是按col1 还是col2没太看明白,写法就是这样了,没测试,可能有手误。
#7
怎么搞的,每次多打几个字,发上来就有一堆回贴了,看来我要连习一下打字速度了
#8
select IDENTITY(int, 1,1) as myid,column1,column2 into #strack from table1
order by column2
select * from #strack
where myid%4=0
这个是一个朋友写得,我也放上去吧!
大家都可以有个参考
order by column2
select * from #strack
where myid%4=0
这个是一个朋友写得,我也放上去吧!
大家都可以有个参考
#9
select IDENTITY(int, 1,1) as myid,column1,column2 into #strack from table1
order by column2
select * from #strack
where myid%4=0
kentyshang的返回值是:5,8,11
-- Columns是惟一的!
-- 则sql 2000可以用
SELECT Columns1,Columns2
FROM(
SELECT Columns1,Columns2,
row = (
SELECT COUNT(*) FROM A A1
WHERE A1.Columns2 < A.Columns2
OR A1.Columns2 = A.Columns2 AND A1.Columns1 <= A.Columns1)
FROM A
)AA
WHERE (row - 1)%4 = 0
邹建你的返回值是:
1,6,12,8
select id=identity(int,1,1),* into # from tableA
select columns1,columns2
from #
where id%5=4
LouisXIV(夜游神) ,你的返回值是:
5,10,7
select *
from #tableA a
where (select count(*)+1
from #tableA
where Columns2<a.Columns2)%4=0
mschen(Co-ok)你的返回值是:
5,8,11,8
所以没有一个是正确的,哈哈!
大家再看一下了!
还有一个要问的是邹建:
row = ROW_NUMBER() OVER(ORDER BY Columns2)
是什么意思呢!
多谢,多谢!
order by column2
select * from #strack
where myid%4=0
kentyshang的返回值是:5,8,11
-- Columns是惟一的!
-- 则sql 2000可以用
SELECT Columns1,Columns2
FROM(
SELECT Columns1,Columns2,
row = (
SELECT COUNT(*) FROM A A1
WHERE A1.Columns2 < A.Columns2
OR A1.Columns2 = A.Columns2 AND A1.Columns1 <= A.Columns1)
FROM A
)AA
WHERE (row - 1)%4 = 0
邹建你的返回值是:
1,6,12,8
select id=identity(int,1,1),* into # from tableA
select columns1,columns2
from #
where id%5=4
LouisXIV(夜游神) ,你的返回值是:
5,10,7
select *
from #tableA a
where (select count(*)+1
from #tableA
where Columns2<a.Columns2)%4=0
mschen(Co-ok)你的返回值是:
5,8,11,8
所以没有一个是正确的,哈哈!
大家再看一下了!
还有一个要问的是邹建:
row = ROW_NUMBER() OVER(ORDER BY Columns2)
是什么意思呢!
多谢,多谢!
#10
在多添加一句是我表述不清的关系:
table A表结构:
Columns1 ID (自动生成)
Columns2 INT(惟一的)
table A表结构:
Columns1 ID (自动生成)
Columns2 INT(惟一的)
#11
没有一个正确的,看来我的也错了。
#12
to lz
尔所谓
Columns2 INT(惟一的)
----------------------
可确定是唯一?望自行检讨数据在先
尔所谓
Columns2 INT(惟一的)
----------------------
可确定是唯一?望自行检讨数据在先
#13
to lz
select *
from #tableA a
where (select count(*)+1
from #tableA
where Columns2<a.Columns2)%4=0
mschen(Co-ok)你的返回值是:
5,8,11,8
-------------------
以此观之,尔表中必存重复数据
select *
from #tableA a
where (select count(*)+1
from #tableA
where Columns2<a.Columns2)%4=0
mschen(Co-ok)你的返回值是:
5,8,11,8
-------------------
以此观之,尔表中必存重复数据
#14
是呀!
最后一行多余了!
实在不好意思!
我也是刚才测试数据的时候才发现的!
道歉!道歉!
最后一行多余了!
实在不好意思!
我也是刚才测试数据的时候才发现的!
道歉!道歉!
#15
select JRNUM from #TB where JRNUM % 4=0
的时候出现错误:
Server: Msg 206, Level 16, State 2, Line 1
Operand type *: int is incompatible with void type
Server: Msg 8117, Level 16, State 1, Line 1
Operand data type numeric is invalid for modulo operator.
CREATE TABLE #TB(
JRNUM numeric(9) NULL)
要怎么修改呢!
多谢!多谢~
的时候出现错误:
Server: Msg 206, Level 16, State 2, Line 1
Operand type *: int is incompatible with void type
Server: Msg 8117, Level 16, State 1, Line 1
Operand data type numeric is invalid for modulo operator.
CREATE TABLE #TB(
JRNUM numeric(9) NULL)
要怎么修改呢!
多谢!多谢~
#16
CREATE TABLE #TB(
JRNUM INT NULL)
JRNUM INT NULL)
#17
select JRNUM from #TB where Convert(int,JRNUM) % 4=0
也可以呢!
谢谢大家!
我的问题解决了!
感谢大家!
我结贴了!
也可以呢!
谢谢大家!
我的问题解决了!
感谢大家!
我结贴了!
#18
再次感谢了!哈哈
#19
#20
这个需求怪怪的……
#21
mark
#22
select JRNUM from #TB where Convert(int,JRNUM) % 4=0
我把1,2,3行数据删除掉,这个还准?????呵呵
我把1,2,3行数据删除掉,这个还准?????呵呵