日期:2014-05-19  浏览次数:20574 次

求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