日期:2014-05-17  浏览次数:20551 次

弱弱的问个问题,怎么生成“以一张表的标题行的所有列作另一张表的一个记录,字段名称也要相同”的这样的一张新表
从这样一张表

au_id au_lname au_fname phone address city state zip contract
172-32-1176 White Johnson 408 496-7223 10932 Bigge Rd. Menlo Park CA 94025 1
213-46-8915 Green Marjorie 415 986-7020 309 63rd St. #411 Oakland CA 94618 1
238-95-7766 Carson Cheryl 415 548-7723 589 Darwin Ln. Berkeley CA 94705 1
267-41-2394 O'Leary Michael 408 286-2428 22 Cleveland Av. #14 San Jose CA 95128 1
274-80-9391 Straight Dean 415 834-2919 5420 College Av. Oakland CA 94609 1
341-22-1782 Smith Meander 913 843-0462 10 Mississippi Dr. Lawrence KS 66044 0
409-56-7008 Bennet Abraham 415 658-9932 6223 Bateman St. Berkeley CA 94705 1
427-17-2319 Dull Ann 415 836-7128 3410 Blonde St. Palo Alto CA 94301 1
472-27-2349 Gringlesby Burt 707 938-6445 PO Box 792 Covelo CA 95428 1
486-29-1786 Locksley Charlene 415 585-4620 18 Broadway Av. San Francisco CA 94130 1
527-72-3246 Greene Morningstar 615 297-2723 22 Graybar House Rd. Nashville TN 37215 0
648-92-1872 Blotchet-Halls Reginald 503 745-6402 55 Hillsdale Bl. Corvallis OR 97330 1
672-71-3249 Yokomoto Akiko 415 935-4228 3 Silver Ct. Walnut Creek CA 94595 1
712-45-1867 del Castillo Innes 615 996-8275 2286 Cram Pl. #86 Ann Arbor MI 48105 1
722-51-5454 DeFrance Michel 219 547-9982 3 Balding Pl. Gary IN 46403 1
724-08-9931 Stringer Dirk 415 843-2991 5420 Telegraph Av. Oakland CA 94609 0
724-80-9391 MacFeather Stearns 415 354-7128 44 Upland Hts. Oakland CA 94612 1
756-30-7391 Karsen Livia 415 534-9219 5720 McAuley St. Oakland CA 94609 1
807-91-6654 Panteley Sylvia 301 946-8853 1956 Arlington Pl. Rockville MD 20853 1
846-92-7186 Hunter Sheryl 415 836-7128 3410 Blonde St. Palo Alto CA 94301 1
893-72-1158 McBadden Heather 707 448-4982 301 Putnam Vacaville CA 95688 0
899-46-2035 Ringer Anne 801 826-0752 67 Seventh Av. Salt Lake City UT 84152 1
998-72-3567 Ringer Albert 801 826-0752 67 Seventh Av. Salt Lake City UT 84152 1



得到

au_id au_lname au_fname phone address city state zip contract
au_id au_lname au_fname phone address city state zip contract


这样一张表

最好是动态sql(我的目的是为了给BCP产生表头)

------解决方案--------------------
SQL code
CREATE TABLE test (A VARCHAR(10),B VARCHAR(10),C VARCHAR(10))
 GO
 
 declare @s nvarchar(4000)
 set @s=''
 Select     @s=@s+','+quotename([name])+'=max(case when [name]='+quotename([name],'''')+' then [name] else ''0'' end)'
 from sys.columns WHERE object_id=OBJECT_ID('test') group BY [object_id],[name]
 SET  @s=SUBSTRING(@s,2,LEN(@s))
 exec('select '+@s+' from sys.columns WHERE object_id=OBJECT_ID(''test'') group BY [object_id]')
 
 /*
 A     B    C
 ----- ---- ----
 A     B    C
 
 (1 行受影响)
 */