微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SqlServer中行变列

     例如创建一个

                 create table stz

              (

             stuNO int  primary key,

             subject nvarchar(20) not null,

             score int not null

              )

              insert into stz values(1000,'数学',90)

              insert into stz values(1001,'语文',90)

              insert into stz values(1002,'英语',90)

 

              insert into stz values(1001,90)

              insert into stz values(1000,90)

 

              insert into stz values(1002,90)

--              现在的情况是

            select * from stz;

                                  :学号,subject,score

            我们要把它变成: 学号 ,数学,语文,英语

            实现如下:

           select stuNo,

                           数学=(select sum(score) from stz where subject='数学' and stuNO=shi.stuNo group by stuNO),

                           语文=(select sum(score) from  stz where subject='语文' and stuNO=shi.stuNO group by stuNo),

                           英语=(select  sum(score) from stz where subject='英语' and stuno=shi.stuNo group by stuNO)

          from stz as shi group by stuNo;

           ---------------------结束

           1,突然想到一些问题,如果我们在多表连接查询时为了性能我们先考虑连接查询,子查询,嵌套查询,知道为什么吗?还有在写查询语句是尽量不要在where 后写运算逻辑?

           其实这里只有一个共同的原因:嵌套查询,where ,后的条件在你查每条数据时都会运行,很是影响性能

           2, 看下这个查语句,有问题吗?select * from (select * from stz);

                  应改成select * from (select * from stz ) as shi  必须把那个表集合付给一个变量的。

           3,看下这段C#代码?会输出什么

                   int i=2000;

                   object o=i;

                    i=2001;

                    int j=(int)o;

                  console.writeLine("{i},{0},{j}");

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐