易截截图软件、单文件、免安装、纯绿色、仅160KB

SQL Server中pivot and unpivot的用法 (行列互转)

 .Pivot的用法体会:
语句范例:
select PN,[2006/5/30] as [20060530],[2006/6/2] as [20060602]
from consumptiondata a
Pivot (sum(a.M_qty) FOR a.M_date in ([2006/5/30],[2006/6/2])) as PVT 
order by PN
 
Table结构 Consumptiondata (PN,M_Date,M_qty)
order by PN可要可不要,并不重要,只是排序的作用
 
关键的是红色部分,解析如下,select 大家都知道,PN是 ConsumptionData表中的一个Column,
[2006/5/30]也是一个Column,他需要显示成[20060530],注意[2006/5/30]不是一个Value,而是一个Column.[2006/6/2]与[2006/5/30]一样.
Pivot ( ........... ) as PVT这个结构是固定格式,没有什么需要特殊说明的,当然PVT随便你给他一个 NICKNAME ,it doesn't make any differences.
sum(a.M_qty) 是我们希望显示出来的值,注意这个地方必须用汇总函数,否则语法不会过.
FOR a.M_date in ([2006/5/30],[2006/6/2])for 表示汇总的值要显示在哪一个Column下面
如果我们想让Sum(M_qty)显示在PN转换的Column下面,则可写为For PN, in 的清单表示我们关注哪些要查看的Column,注意再次强调是Column,不是Value. in的清单是Column清单,不是Value清单,是M_date的Value转换成的Column清单. 
 
2.UnPivot
--此段可以直接在Sql 2005中执行
CREATE TABLE pvt (VendorID int, Emp1 int, Emp2 int,
Emp3 int, Emp4 int, Emp5 int)
GO
INSERT INTO pvt VALUES (1,4,3,5,4,4)
INSERT INTO pvt VALUES (2,4,1,5,5,5)
INSERT INTO pvt VALUES (3,4,3,5,4,4)
INSERT INTO pvt VALUES (4,4,2,5,5,4)
INSERT INTO pvt VALUES (5,5,1,5,5,5)
GO
--select * from PVT
--Unpivot the table.
SELECT VendorID, Employee, Orders
from PVT
UNPIVOT (
 Orders FOR Employee IN ([Emp1], [Emp2], [Emp3], [Emp4], [Emp5])
)AS unpvt
GO


相关文档:

使用Hibernate+MySql+native SQL的BUG,以及解决办法

本来是mssql+hibernate+native SQL 应用的很和谐
但是到了把mssql换成mysql,就出了错(同样的数据结构和数据)。
查询方法是:
String sql =
"select id XXX_ID from t_tab";
List<Map> list = session.createSQLQuery(sql)
.setResultTransformer(Transformers.ALIAS_TO_ENTITY_MAP)
.list();
错 ......

如何检查SQL Server阻塞

--查询应用程序的等待
SELECT TOP 10
wait_type,waiting_tasks_count AS tasks,
wait_time_ms,max_wait_time_ms AS max_wait,
signal_wait_time_ms AS signal
from sys.dm_os_wait_stats
ORDER BY wait_time_ms DESC
--查询在任一时刻所有授权给当前执行事务或当前执行事务等待的锁
SELECT
request_session_id A ......

使用公用表表达式(CTE)简化嵌套SQL 和进行递归调用

1.使用CTE简化嵌套sql
   先看下面一个嵌套的查询语句:
select * from person.StateProvince where CountryRegionCode in 
         (select CountryRegionCode from person.CountryRegion where  ......

case when then...else end sql 语句用法

select f.AGENTID as 'ID',
          f.AGENTNAME as '姓名',
          f.COMNAME as '公司简称',
          c.REGISTDATE as '注册时间',
     ......

Linq查询 DataSet 能否和SQL 级联?

        最近做项目的时候,遇到了一个问题。我主要是做一个Web Services给别人用的。别人传一个用户ID号过来,然后我将这个用户的所有好友的下载记录包装成一个DataSet返回去。 而根据用户ID号获取该用户的所有好友信息,则是通过另一个Web Services得到的,这里为FriendDS。
  ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号