前几天去一家公司笔试,其中有两题目如下:
1.请写出在SQL Server中创建交叉表的步骤
2.请写出在Crystal Report中创建交叉表的步骤我不知第2题在这合不合适,如果这题也得到解答那就再另加分

解决方案 »

  1.   

    第一题
    IF OBJECT_ID('TEST') IS NOT NULL 
       DROP TABLE TEST CREATE TABLE [Test] (
    [id] [int] IDENTITY (1, 1) NOT NULL ,
    [name] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [subject] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL ,
    [Source] [numeric](18, 0) NULL  
    ) ON [PRIMARY]
    GOINSERT INTO [test] ([name],[subject],[Source]) values (N'张三',N'语文',60)
    INSERT INTO [test] ([name],[subject],[Source]) values (N'李四',N'数学',70)
    INSERT INTO [test] ([name],[subject],[Source]) values (N'王五',N'英语',80)
    INSERT INTO [test] ([name],[subject],[Source]) values (N'王五',N'数学',75)
    INSERT INTO [test] ([name],[subject],[Source]) values (N'王五',N'语文',57)
    INSERT INTO [test] ([name],[subject],[Source]) values (N'李四',N'语文',80)
    INSERT INTO [test] ([name],[subject],[Source]) values (N'张三',N'英语',100)
    Go--交叉表语句的实现:
    --用于:交叉表的列数是确定的
    select name,sum(case subject when '数学' then source else 0 end) as '数学',
    sum(case subject when '英语' then source else 0 end) as '英语',
    sum(case subject when '语文' then source else 0 end) as '语文' 
    from test 
    group by name 
      

  2.   

    用游标循环,然后拼SQL语句执行