-1

这是我的表结构

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())
)

这种方式数据存储在表格屏幕截图中

在此处输入图像描述

现在我必须以这种方式显示数据并按日期排序,并且 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...

我想我需要使用支点,但无论我尝试什么都行不通。所以任何帮助将不胜感激。谢谢

4

1 回答 1

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函数聚合您想要的列中的值。

于 2013-10-07T14:47:15.807 回答