0

tabItem と tabBin という名前の 2 つのテーブルがあります。次に示すように、データはコードを介してピボット テーブル形式で取得されます。以下のコードは期待どおりに機能するようになりましたが、列と行の合計フィールドを追加できません。

現在、行の合計は行内のすべてのセルに基づいているわけではありません。代わりに、行内の次のセルのみを合計しようとしています。列ヘッダーは 1D + 2B + BRG + BHT です。これを行う方法が見つかりません。 、この列に「Total」という名前を付ける必要があります。

また、次を出力する別の列を追加する必要があります。

  1. 1D + 2B < SO の場合、「1 CORD」
  2. 合計 < SO + ROL の場合、「2 CSTK」

同様に、10〜15の条件のような他の多くの条件があります。言及されたコードはすべてGoogleで検索して記述されているため、コードの記述方法についてはわかりませんが、今は答えを見つけることができず、私はいませんすべてmysqlに精通しています。どんな助けでも大歓迎です。

select 
 `tabItem`.name as "Item Code:Link/Item:150",
 `tabItem`.description as "Description::300",
 ifnull(`tabItem`.re_order_level,0) as "ROL:Currency:50",
 ifnull(`tabBin`.reserved_qty,0) as "SO:Currency:50",
 ifnull(`tabBin`.ordered_qty,0) as "PO:Currency:50",
 ifnull(min(case when `tabBin`.warehouse="DEL20A" then `tabBin`.actual_qty end),0) as "1D:Currency:50",  
 ifnull(min(case when `tabBin`.warehouse="BGH655" then `tabBin`.actual_qty end),0) as "2B:Currency:50",    
 ifnull(min(case when `tabBin`.warehouse="RG-BGH655" then `tabBin`.actual_qty end),0) as "BRG:Currency:50",    
 ifnull(min(case when `tabBin`.warehouse="HT-BGH655" then `tabBin`.actual_qty end),0) as "BHT:Currency:50",    
 ifnull(min(case when `tabBin`.warehouse="FG-BGH655" then `tabBin`.actual_qty end),0) as "BFG:Currency:50",    
 ifnull(min(case when `tabBin`.warehouse="SLIT-DEL20A" then `tabBin`.actual_qty end),0) as "DSL:Currency:50",    
 ifnull(min(case when `tabBin`.warehouse="RG-DEL20A" then `tabBin`.actual_qty end),0) as "DRG:Currency:50",    
 ifnull(min(case when `tabBin`.warehouse="FG-DEL20A" then `tabBin`.actual_qty end),0) as "DFG:Currency:50", 
 ifnull(min(case when `tabBin`.warehouse="TEST-DEL20A" then `tabBin`.actual_qty end),0) as "DTS:Currency:50",    
 ifnull(min(case when `tabBin`.warehouse="REJ-DEL20A" then `tabBin`.actual_qty end),0) as "DRJ:Currency:50",   
 ifnull(min(case when `tabBin`.warehouse="RM-DEL20A" then `tabBin`.actual_qty end),0) as "DRM:Currency:50",    
 ifnull(min(case when `tabBin`.warehouse="RM-BGH655" then `tabBin`.actual_qty end),0) as "BRM:Currency:50"  
 from
 `tabItem`
 left join `tabBin` on
 `tabItem`.name = `tabBin`.item_code
where
 `tabBin`.item_code <>""
 and `tabBin`.item_code = `tabItem`.name    
group by `tabItem`.name
order by `tabItem`.name asc
4

1 に答える 1

0

サブクエリでこれを試してください。クエリを使用します。. .

select t.*,
       ("1D:Currency:50" + "2B:Currency:50" + "BRG:Currency:50" + "BHT:Currency:50"
       ) as tot1,
       (case when "1D:Currency:50" + "2B:Currency:50" < "SO:Currency:50"
             then '1 CORD'
             when ("1D:Currency:50" + "2B:Currency:50" + "BRG:Currency:50" + "BHT:Currency:50" < "SO:Currency:50" + "ROL:Currency:50"
             then  "2 CSTK"
         end)
from (<your query>) t

これにより、進め方のアイデアが得られるはずです。

于 2013-01-12T03:08:18.797 に答える