Beginning C# 2008 Databases 笔记(一)

Beginning C# 2008 Databases Chapter 4 里的主要内容:
• PIVOT operator
PIVOT 是新引入SQL Server 2005的运算符,它让你能够将行级数据旋转成为列表数据,而不需要像先前版本的SQL Server一样使用CASE语句。
例子:
表 Sales.CreditCard 其中有 CardType, ExpYear 等字段。
我们现要查询不同的CardType所对应的ExpYear分别为2006和2007的统计。
select CardType ,[2006] as Year2006,[2007] as Year2007
from
(
  
select CardType,ExpYear
  
from Sales.CreditCard
)piv Pivot
(
  
count(ExpYear) for ExpYear in ([2006],[2007])
)
as carddetail
order by CardType
这里还有一个例子

• ROW_NUMBER() function & PARTITION BY clause
ROW_NUMBER() 作用是对结果按给定列排序并生成一个新列显示行号。
ROW_NUMBER() over (order by ColumnName) as [RowCount]

只有应用了ROW_NUMBER() 方法的地方,我们才能使用PARTITION BY 从句。
它能实现更强大的功能。
ROW_NUMBER() over (partition by Column1 order by Column2)
as
 [RowCount]
结果会先按照Column1中的值进行排序,
然后在这基础上对
Column1中的同一个值所对应的那些行再应用
ROW_NUMBER() over (order by Column2) as [RowCount]

• Pattern matching
1.#表示任意多个字符
2._表示任意单字符
3.[]表示单字符匹配范围。例:[a-f]
4.[^]表示单字符不匹配范围。例:[^a-f]

• Aggregate functions
MIN() MAX() SUM() AVG() COUNT()
COUNT() 方法参数若为某明确的列名,则返回值中会忽略该列中值为 null 的行。

• DATETIME functions
很简单,例子:
select
current_timestamp 'standard datetime',
getdate() 'Transact-SQL datetime',
datepart(yeargetdate()) 'datepart year',
year(getdate()) 'year function',
datepart(hour, getdate()) 'hour'

• Joins
很简单,主要介绍了Inner Join。
例子:an Inner Join of Three Tables
select
  o.orderid OrderID,
  c.companyname CustomerName,
    e.lastname Employee
from
  orders o 
inner join employees e on o.employeeid = e.employeeid
  inner join customers c on o.customerid = c.customerid
其他 Join:LEFT OUTER JOIN, RIGHT OUTER JOIN,
  FULL OUTER JOIN, UNION JOIN, and CROSS JOIN.

posted on 2008-02-09 14:13  dingz  阅读(602)  评论(1)    收藏  举报

导航