MS SQL SERVER 如何把多列的值 , 变成一列多行 .

SELECT '小名' AS c1 ,
'小名' AS c2 ,
'小名' AS c3 ,
'小名' AS c4 ,
'小名' AS c5 ,
'小名' AS c6 ,
'小名' AS c8

    行转列,列转行是我们在开发过程中经常碰到的问题

    行转列一般通过CASE WHEN 语句来实现,也可以通过 SQL SERVER 2005 新增的运算符PIVOT来实现。用传统的方法,比较好理解。层次清晰,而且比较习惯。

    但是PIVOT 、UNPIVOT提供的语法比一系列复杂的SELECT...CASE 语句中所指定的语法更简单、更具可读性 .

    --行转列的静态方案一:CASE WHEN,兼容sql2000
     select custid,
    3 sum(case when YEAR(orderdate)=2002 then qty end) as [2002],
      sum(case when YEAR(orderdate)=2003 then qty end) as [2003],
      sum(case when YEAR(orderdate)=2004 then qty end) as [2004]
      from orders
      group by custid;

     --行转列的静态方案二:PIVOT,sql2005及以后版本
    select *
     from (select custid,YEAR(orderdate) as years,qty from orders) as ord
    pivot(sum(qty) for years in([2002],[2003],[2004]))as p

温馨提示:内容为网友见解,仅供参考
第1个回答  2011-07-29
MS SQL SERVER没有这样的函数可以将多列转变为多行。
SELECT '小名' AS c1
union all
select '小名' AS c2
union all
select '小名' AS c3
union all
select '小名' AS c4
union all
select '小名' AS c5
union all
select '小名' AS c6
union all
select '小名' AS c8本回答被提问者采纳

MS SQL SERVER 如何把多列的值 , 变成一列多行 .
行转列一般通过CASE WHEN 语句来实现,也可以通过 SQL SERVER 2005 新增的运算符PIVOT来实现。用传统的方法,比较好理解。层次清晰,而且比较习惯。但是PIVOT 、UNPIVOT提供的语法比一系列复杂的SELECT...CASE 语句中所指定的语法更简单、更具可读性 .--行转列的静态方案一:CASE WHEN,兼容sql2000 sele...

MS SQL server - Insert 用法汇总
1. 单个值插入当值与列匹配时,可以直接插入,无需指定列名。2. 多值插入同样,如果列与值的顺序一致,可以一次性插入多行数据。3. 列顺序调整如果插入值的顺序与表中列的顺序不一致,必须明确指定列名。4. 默认值列对于有默认值的列,插入时默认会使用这些值,除非特别指定。5. 自动标识列使用IDEN...

Ms sql server中如何使多个数据库执行同一条查询语句
1. 两种情况,在一台服务器上的多个数据库 2. SQL 如下:select * from 数据库1.dbo.表1 union all select * from 数据库2.dbo.表1 union all select * from 数据库3.dbo.表1 3. 第二中情况,多台服务器上的数据库 4.同样的在SQL Server2005中也可以链接到其他的SQL...

SQL查询的时候有多个满足的条件我只想返回第一个结果就行,该怎么改...
用 top 1来返回一行,用 datediff(day,t1.FcheckDate, getdate())as 账龄 来进行日期相减 Select top 1 u2.fnumber as 仓库代码,u2.FName as 仓库名称,ti.fnumber as 物料代码 ,ti.FName as 物料名称 ,ti.FModel as 型号,u1.FBatchNo as 批号,tm.FName as 基本单位,cast(u1.FQty ...

mssqlserver怎样修改表名,列名,添加表列,删除表列,修改表列类型
选中要修改的表名或列名,再单击左键就可以直接修改表名或列名了 选中表名,右键设计,然后就可以添加表列,删除表列,修改表列类型了,这里也可以修改列名

Sql server中如何删除有默认值的列
,如果这个列有默认值,这样删除列会报错,这时要删除列的默认值。declare @name varchar(20)select @name=b.name from syscolumns a,sysobjects b where a.id=object_id('[表名]') and b.id=a.cdefault and a.name='[列名]' and b.name like 'DF%'exec('alter table article drop ...

mssql中一个表的最大字段数量是多少
sql server 2008一个表的最大字段数是1024个。

mssql数据库表自增长字段怎样重置
方法一:使用TRUNCATE TABLE语句:TRUNCATE TABLE删除表中的所有行,而不记录单个行删除操作,同时重置自增列。TRUNCATE TABLE 在功能上与没有WHERE子句的DELETE语句相同;但是,TRUNCATE TABLE 速度更快,使用的系统资源和事务日志资源更少。方法二:使用DBCC CHECKIDENT语句:DBCC CHECKIDENT在 SQL Server 2008...

SQL server中如何更改排序规则
1、首先新建一个数据库,如图为test。2、可以右键查看该数据库的属性,可以看到他的排序规则等属性,但是无法进行修改。3、创建一个新表,添加一个name字段char(10)类型,4、输入数据后,我们会发现汉字会变成??字符。5、关闭所有已打开的表,首先在数据库上右键,新建查询。6、输入(其中test是刚建...

SQL Server的六种数据移动方法
把数据库的数据文件(* mdf)和日志文件(* ldf)都拷贝到目的服务器 在SQL Server Query Analyzer中用语句进行恢复:EXEC sp_attach_db @dbname = ’test’filename = ’d:mssql data est_data mdf’filename = ’d:mssql data est_log ldf’这样就把test数据库附加到SQL Server中 可以照常使用 ...

相似回答