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

このようにして、データはテーブルのスクリーンショットに保存されます

ここに画像の説明を入力

今、私はこの方法でデータを表示する必要があります。日付の昇順で並べ替えると、2 つの日付を指定する必要がある場所に 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 に答える