请问这个存储过程怎么写,记录的前n个为1,后面的为0(100分)

C

cxz9

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在要

select m from a where d='APL'
select 1 as c,* from b
在前m条记录c为1,后面的c为0
谢谢。
 
//条件:B表存在关键字段(Key Field) B02
declare @NUM integer
declare @L_SQL varchar(6000)

select @NUM=ISNULL(m,0) from a where d='APL'

set @l_SQL = 'SELECT TOP '+CONVERT(VARCHAR(10),@NUM)+' 1 AS C, * FROM B '
set @l_SQL = @l_SQL + 'UNION '
set @l_SQL = @l_SQL + 'SELECT 0 AS C,* FROM B WHERE B02 NOT IN'
SET @l_SQL = @l_SQL + '(SELECT TOP '+CONVERT(VARCHAR(10),@NUM)+' B02 FROM B) '

exec(@l_SQL)
 
是oracle吗?
select decode(trunc(rownum / N), 0,0,1) from all_tables;
 
 我是SQL Server
谢谢,我先试试
 
真奇怪,那些为1的怎么会在最后的。
那是改成这样就可了。但这是为什么呀
select '0' as c,* from tdzxd where tybh='M00067-0BU' and xhid not in
(select top 3 xhid from tdzxd where tybh='M00067-0BU')
union select top 3 '1' as c,* from tdzxd where tybh='M00067-0BU'
 
多人接受答案了。
 
顶部