如何在sql server 2005中按照我的要求显示数据

时间:2013-10-07 14:33:10

标签: sql-server pivot

这是我的表结构

create table DailyFinishJobsHistory
(
   RowID   INT NOT NULL IDENTITY (1, 1),  
  [Job Type]  Varchar(16) NOT NULL,  
  [No of Jobs]  INT NOT NULL DEFAULT ((0)),  
  [Turnaround Time] DECIMAL(10,2) NOT NULL DEFAULT ((0)),  
  [One Day Per]  DECIMAL(8,2),
  CreatedDate datetime DEFAULT (GetDate())
)

这样,数据存储在表格屏幕截图

enter image description here

现在我必须以这种方式显示数据&按日期排序asc和where子句将在那里我需要指定两个日期。

date   OUR_No of jobs  OUR_Turnaround_time OUR_One day per Salesnew_ of jobs Salesnew_no of jobs Salesnew_turnaround_time this way i need to show...

我想我需要使用枢轴,但我尝试的任何东西都不起作用。所以任何帮助将不胜感激。感谢

1 个答案:

答案 0 :(得分:1)

您的问题和要求不是很清楚,但我想猜测您需要以下内容:

select
  convert(varchar(10), createddate, 120) date,
  sum(case when [job type] = 'OUR' then [No of Jobs] else 0 end) OurNoOfJobs,
  sum(case when [job type] = 'OUR' then [Turnaround Time] else 0 end) OurTurnaroundTime,
  sum(case when [job type] = 'OUR' then [One Day Per] else 0 end) OurOneDayPer,
  sum(case when [job type] = 'SALESNEW' then [No of Jobs] else 0 end) SalesNewNoOfJobs,
  sum(case when [job type] = 'SALESNEW' then [Turnaround Time] else 0 end) SalesNewTurnaroundTime,
  sum(case when [job type] = 'SALESNEW' then [One Day Per] else 0 end) SalesNewOneDayPer
from DailyFinishJobsHistory
group by convert(varchar(10), createddate, 120);

请参阅SQL Fiddle with Demo

这使用聚合函数和CASE表达式将您的数据行转换为列,使用sum函数聚合您想要的列中的值。