2016-04-20 50 views
0

通過子查詢我試圖將值和類別插入到外部查詢的列中。轉置並將子查詢插入到外部查詢中(SQL,select)

這使得它比簡單的轉換更復雜。需要被插入作爲另一列的值和「原點」的值的「原點」列的列標題欄進入另一個列這樣:

CYWP Name Qty  PR2 
201607 M3 618400 0 
201607 R1 329400 0 
201607 M1 100056 0 
201607 M2 20800  0 
201607 R2 878921 113884 

變爲:

CYWP Name Qty 
201607 M3 618400 
201607 R1 329400 
201607 M1 100056 
201607 M2 20800 
201607 R2 878921 
201607 PR2 113884 

我到目前爲止的代碼;

select p.CuttingYearWeekPlanned, ps.Name, 
    sum(case when p.ProductionStateIdTo = 2 or p.ProductionStateIdTo =101 
       then ( case when p.QuantityPlannedAdjusted > 0 
         then p.QuantityPlannedAdjusted 
         else p.QuantityPlanned end) 
       else ( case when p.QuantityPlannedAdjusted > 0 
         then ceiling(convert(decimal(10,1),p.QuantityPlannedAdjusted)/100)*100 
         else ceiling(convert(decimal(10,1),p.QuantityPlanned)/100)*100 end) 
       end) as qtyplanned, 
    sum(case when p.ProductionStateIdTo = 101 and b.QuantityPreR2OrPlastic > 0 
       then b.QuantityPreR2OrPlastic 
       else 0 
       end) as PR2 

from ProductionOrder p 

inner join ProductionState ps on p.ProductionStateIdTo = ps.ProductionStateId 
inner join Batch b on p.BatchId = b.BatchId 

group by p.CuttingYearWeekPlanned, ps.Name 

難點在於'Qty'列中的值來自不同的表格,然後是'PR2'列的值。外部查詢中的'group by'子句開始與我的總和混淆,每次嘗試轉置並插入PR2列的結果。

+0

**更新**:該表是查詢的下方,而不是源數據的臨時結果。 – Sambo

回答

0

我認爲這是一個union all。我不知道你的查詢與你的問題有什麼關係 - 這個問題提到了一個表,但查詢有很多。

這裏的理念是:

select CYWP, Name, Qty 
from t 
union all 
select CYWP, 'PR2', Qty 
from t 
where PR2 <> 0;