100分! 在.NET版块没有找到答案 看看能不能在SQL语句上做处理显示
1以Pubs数据库authors为例用table实现绑定数据.
2要求:实现作者的比较,根据用户选择的作者数量不同生成列.
3例如:如果用户选择了作者 "White "\ "Green "\ "Carson "就显示这三个作者的数据.
4效果如: au_Id 172-32-1176 213-46-8915 238-46-8915
au_name White Green Carson
au_fname Johnson MarJorie Cheryl
phone 408 496-7223 415 986-7020 415 548-7723
address 10932 Bigge Rd. 309 63rd St. #411 589 Darwin Ln.
city Menlo Park Oakland Berkeley
.... ... ... ....
下面类似显示 authors表有多少个数据字段形成多少个比较行(也就是说行是一定的)
我用的工具是VS2003
------解决方案--------------------没看懂,你给个具体的数据和想要得到的结果吧.
------解决方案--------------------Use Pubs
GO
--建立存儲過程
Create Procedure Get_Authors(@au_lname Varchar(100))
As
Begin
Declare @S1 Nvarchar(4000), @S2 Nvarchar(4000)
Select @S1 = N ' Select ColName As au_Id ', @S2 = ' '
Select @S1 = @S1 + ' , Max(Case au_id When N ' ' '+ au_id + N ' ' ' Then Data Else ' ' ' ' End) As [ ' + au_id + '] '
From authors Where CharIndex( ', ' + au_lname + ', ' , ', ' + @au_lname + ', ') > 0
Group By au_id
Select @S2 = @S2 + ' Union All Select ' + Rtrim(ColID) + ' As ColID, au_id, N ' ' ' + Name + N ' ' ' As ColName, Rtrim( ' + Name + ') As Data From authors '
From SySColumns Where ID = OBJECT_ID( 'authors ') And Name != 'au_id ' Order By ColID
Select @S1 = @S1 + ' From ( ' + Stuff(@S2, 1, 11, ' ') + N ') A Group By ColID, ColName Order By ColID '
EXEC(@S1)
End
GO
--測試
EXEC Get_Authors 'White,Green,Carson '
GO
--刪除測試環境
Drop Procedure Get