首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

求sql语句,该如何处理

2012-03-15 
求sql语句表姓名年度月份a20073a20075a20076B20061B20073B20075结果(2007)姓名次数1月23456789101112a3vvv

求sql语句

  姓名       年度       月份
  a             2007         3
  a             2007         5
  a             2007         6
  B             2006         1
  B             2007         3
  B             2007         5

结果(2007)
  姓名       次数       1月     2     3     4     5     6   7     8     9     10     11     12
  a               3                           v           v     v
  b               2                           v           v

[解决办法]
Select
姓名,
Count(*) As 次数,
Max(Case 月份 When 1 Then 'v ' Else ' ' End) As [1月],
Max(Case 月份 When 2 Then 'v ' Else ' ' End) As [2月],
Max(Case 月份 When 3 Then 'v ' Else ' ' End) As [3月],
Max(Case 月份 When 4 Then 'v ' Else ' ' End) As [4月],
Max(Case 月份 When 5 Then 'v ' Else ' ' End) As [5月],
Max(Case 月份 When 6 Then 'v ' Else ' ' End) As [6月],
Max(Case 月份 When 7 Then 'v ' Else ' ' End) As [7月],
Max(Case 月份 When 8 Then 'v ' Else ' ' End) As [8月],
Max(Case 月份 When 9 Then 'v ' Else ' ' End) As [9月],
Max(Case 月份 When 10 Then 'v ' Else ' ' End) As [10月],
Max(Case 月份 When 11 Then 'v ' Else ' ' End) As [11月],
Max(Case 月份 When 12 Then 'v ' Else ' ' End) As [12月]
From TableName
Where 年度 = 2007
Group By 姓名

[解决办法]
Create Table TEST
(姓名Varchar(10),
年度Int,
月份Int)
Insert TEST Select 'a ', 2007, 3
Union All Select 'a ', 2007, 5
Union All Select 'a ', 2007, 6
Union All Select 'B ', 2006, 1
Union All Select 'B ', 2007, 3
Union All Select 'B ', 2007, 5
GO
Select
姓名,
Count(*) As 次数,
Max(Case 月份 When 1 Then 'v ' Else ' ' End) As [1月],
Max(Case 月份 When 2 Then 'v ' Else ' ' End) As [2月],
Max(Case 月份 When 3 Then 'v ' Else ' ' End) As [3月],
Max(Case 月份 When 4 Then 'v ' Else ' ' End) As [4月],
Max(Case 月份 When 5 Then 'v ' Else ' ' End) As [5月],
Max(Case 月份 When 6 Then 'v ' Else ' ' End) As [6月],
Max(Case 月份 When 7 Then 'v ' Else ' ' End) As [7月],
Max(Case 月份 When 8 Then 'v ' Else ' ' End) As [8月],
Max(Case 月份 When 9 Then 'v ' Else ' ' End) As [9月],
Max(Case 月份 When 10 Then 'v ' Else ' ' End) As [10月],
Max(Case 月份 When 11 Then 'v ' Else ' ' End) As [11月],
Max(Case 月份 When 12 Then 'v ' Else ' ' End) As [12月]


From TEST
Where 年度 = 2007
Group By 姓名
GO
Drop Table TEST
--Result
/*
姓名次数1月2月3月4月5月6月7月8月9月10月11月12月
a3vvv
B2vv
*/

热点排行
Bad Request.