Sql-Server

SQL SERVER - 分組和轉換計量單位

  • January 23, 2018

我給了一個任務,但很難解決它。希望你能幫我解決這個問題。

這是我的場景。

我有一張銷售表。產品是麵包、紙杯蛋糕和餅乾。

這是條件:

如果我發現 12 包芝士蛋糕或某些產品,我會將其轉換為 1 盒。

所以如果我有

第 1 行產品:芝士蛋糕 數量:5 包第2

產品:芝士蛋糕 數量:5 包 第3

產品:芝士蛋糕 數量:2 包

我會得到:

第 1 行產品:芝士蛋糕數量:1 盒

如您所見,從 3 行開始,它變成了 1 行。

你能幫我怎麼做嗎?

這是我的程式碼:

select 
       SoldtoPtNm,
       MatCode,
       MatDesc,
       SU,
       SUM(GrossQty) as total,
       datepart(wk, BillDt) as week,
       BillDt
from tbl_Sales_test

group by 
       SoldtoPtNm,
       MatCode,
       MatDesc,
       SU,
       GrossQty,
       BillDt

現在我得到的是相同單位的數量。請查看結果集的螢幕截圖。

任何提示和建議將不勝感激。謝謝!

結果集

假設你有桌子:

ProductCode ProductDescription  ProductQty
1           Apple               19
2           Banana              1
1           Apple               2
1           Apple               4
2           Banana              10
3           Clementine          8
3           Clementine          1
4           Lemon               12

詢問:

Select * into #temp from (
select ProductCode, 
      ProductDescription, 
      sum(ProductQty) / 12 as Qty,
      case when (sum(ProductQty) / 12) > 0 then 'BOX' else 'PACK' end Package
from Products
group by ProductCode, ProductDescription
union all
select ProductCode, 
      ProductDescription, 
      sum(ProductQty) % 12 as Qty,
      case when (sum(ProductQty) % 12) = 0 then 'No' else 'PACK' end Package
from Products
group by ProductCode, ProductDescription) as tmp

select * from #temp
where Package<>'No'
and Qty<>0
order by ProductCode

結果我得到了這個:

ProductCode ProductDescription  Qty Package
1           Apple               2   BOX
1           Apple               1   PACK
2           Banana              11  PACK
3           Clementine          9   PACK
4           Lemon               1   BOX

我希望這就是你正在尋找的。

引用自:https://dba.stackexchange.com/questions/195980