我想这有三种方法: 1、象上边各位说的,把读取来的按奇偶分开显示 2、把SQL 语句修改下,直接改成两列 3、做存贮过程 1种就不说了。 2种:用几次SQL读取。SQL过程如下:drop table #NewTable drop Table #Tmp1 drop Table #Tmp2 select IDENTITY(int, 1,1) AS ID_Num,A00101 INTO #NewTable from A001 select IDENTITY(int, 1,1) as Nu,A00101 into #Tmp1 from #NewTable where (ID_Num % 2)<>0select IDENTITY(int, 1,1) as Nu,A00101 into #Tmp2 from #NewTable where (ID_Num % 2)=0 select a.A00101 as m001,b.A00101 as m002 from #Tmp1 as a,#Tmp2 as b where a.Nu=b.Nu3 种 存贮过程: 表名 table1 表: id type 1 类1 1 类2 1 类3 2 类4 2 类5 3 类6 请问怎样得到: id type 1 类1,类2,类3 2 类4,类5 3 类6 存贮过程如下。 CREATE PROCEDURE [dbo].[testtmp] AS declare @lNum numeric(18,0) declare @i numeric(18,0) declare @id numeric(18,0) declare @gp varchar(20) declare @type varchar(20) declare @colCon varchar(1000) declare @im numeric(18,0) select @lNum=max(numtmp) from ( select id,count(*) as numtmp from Table1 group by id ) as mm set @i=0 set @colCon='' Create Table #TsaveTmp ( A0 varchar(20) ) ON [PRIMARY] WHILE (@i<@lNum) BEGIN set @i=@i+1 set @colCon='ALTER TABLE #TsaveTmp ADD A'+ convert(varchar(20),@i)+ ' varchar(20)' exec(@colCon) END set @i=0 DECLARE CurTmp CURSOR FOR select id,count(*) as numtmp from Table1 group by id order by Count(*) DESC OPEN CurTmp FETCH NEXT FROM CurTmp into @id,@gp WHILE @@FETCH_STATUS = 0 BEGIN set @i=@i+1 set @colCon='' set @im=0 DECLARE CurTmp1 CURSOR FOR select type from Table1 where id=@id OPEN CurTmp1 FETCH NEXT FROM CurTmp1 into @type WHILE @@FETCH_STATUS = 0 BEGIN set @im=@im+1 set @colCon=@colCon+''''+@type+''',' FETCH NEXT FROM CurTmp1 into @type END CLOSE CurTmp1 DEALLOCATE CurTmp1 WHILE (@im<@lNum) BEGIN set @im=@im+1 set @colCon=@colCon+''''''+',' END if(len(@colCon)>0) Begin set @colCon=substring(@colCon,1,len(@colCon)-1) set @colCon ='insert into #TSaveTmp values('+ convert(varchar(10),@i) +','+ @colCon +')' exec( @colCon) END FETCH NEXT FROM CurTmp into @id,@gp END CLOSE CurTmp DEALLOCATE CurTmp select * from #TSaveTmp exec('drop table #TSaveTmp') GO
aaaaaaaaaaaaa
bbbbbbbbbbbbb
ccccccccccccc
ddddddddddddd
显示到页面是这样的一行两列
aaaaaaaaaaaa bbbbbbbbbbb
cccccccccccc ddddddddddd就这样的
...
int i=1;
richTextBox.Text="";while (sdr.Read())
{
richTextBox.Text += sdr[0].ToString()+" ";
if (i%2==0) richTextBox.Text += '\r';
++i;
}===============================
这样,richTextBox就显示两列数据。同理,可以在其他控件中显示。
代码很简单我就贴了。
1、象上边各位说的,把读取来的按奇偶分开显示
2、把SQL 语句修改下,直接改成两列
3、做存贮过程
1种就不说了。
2种:用几次SQL读取。SQL过程如下:drop table #NewTable
drop Table #Tmp1
drop Table #Tmp2
select IDENTITY(int, 1,1) AS ID_Num,A00101
INTO #NewTable from A001
select IDENTITY(int, 1,1) as Nu,A00101 into #Tmp1 from #NewTable where (ID_Num % 2)<>0select IDENTITY(int, 1,1) as Nu,A00101 into #Tmp2 from #NewTable where (ID_Num % 2)=0
select a.A00101 as m001,b.A00101 as m002 from #Tmp1 as a,#Tmp2 as b where a.Nu=b.Nu3 种 存贮过程:
表名 table1
表: id type
1 类1
1 类2
1 类3
2 类4
2 类5
3 类6
请问怎样得到:
id type
1 类1,类2,类3
2 类4,类5
3 类6
存贮过程如下。
CREATE PROCEDURE [dbo].[testtmp] AS declare @lNum numeric(18,0)
declare @i numeric(18,0)
declare @id numeric(18,0)
declare @gp varchar(20)
declare @type varchar(20)
declare @colCon varchar(1000)
declare @im numeric(18,0) select @lNum=max(numtmp) from (
select id,count(*) as numtmp from Table1 group by id
) as mm set @i=0
set @colCon='' Create Table #TsaveTmp
(
A0 varchar(20)
) ON [PRIMARY] WHILE (@i<@lNum)
BEGIN set @i=@i+1
set @colCon='ALTER TABLE #TsaveTmp ADD A'+ convert(varchar(20),@i)+ ' varchar(20)' exec(@colCon) END set @i=0
DECLARE CurTmp CURSOR FOR
select id,count(*) as numtmp from Table1 group by id order by Count(*) DESC
OPEN CurTmp
FETCH NEXT FROM CurTmp into @id,@gp
WHILE @@FETCH_STATUS = 0
BEGIN
set @i=@i+1 set @colCon=''
set @im=0 DECLARE CurTmp1 CURSOR FOR
select type from Table1 where id=@id
OPEN CurTmp1
FETCH NEXT FROM CurTmp1 into @type
WHILE @@FETCH_STATUS = 0
BEGIN
set @im=@im+1
set @colCon=@colCon+''''+@type+''',' FETCH NEXT FROM CurTmp1 into @type
END
CLOSE CurTmp1
DEALLOCATE CurTmp1 WHILE (@im<@lNum)
BEGIN set @im=@im+1
set @colCon=@colCon+''''''+','
END
if(len(@colCon)>0)
Begin
set @colCon=substring(@colCon,1,len(@colCon)-1)
set @colCon ='insert into #TSaveTmp values('+ convert(varchar(10),@i) +','+ @colCon +')' exec( @colCon)
END
FETCH NEXT FROM CurTmp into @id,@gp
END
CLOSE CurTmp
DEALLOCATE CurTmp
select * from #TSaveTmp
exec('drop table #TSaveTmp')
GO