iT邦幫忙

0

MS SQL相同資料不同計算

我目前一張資料表出來,一般銷售明細

舉例

銷售商品 數量 金額
衣服 3 0
衣服 2 200

平常都會用 GROUPY BY 衣服

但是出來結果 就會是

舉例

銷售商品 數量 金額
衣服 5 200

想要有同時呈現 下方方式

舉例
銷售商品 | 數量 | 無金額數量 | 金額
----- | ------------- |--------
衣服 | 2 | 3 | 200

大大們 有沒有解題的方法呢?

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
Albert
iT邦高手 1 級 ‧ 2016-08-29 16:45:17
最佳解答

這是
計價與不計價分離的好方法
貴公司要求是正確的

一般來說一個SQL Statement 就可以解決

SELECT x,商品, SUM(x.計價數量),SUM(x.不計價數量), SUM(x.金額)
FROM(
SELECT a,商品, 
CASE WHEN a.金額>0 THEN  a.數量 ELSE 0 END AS  計價數量,
CASE WHEN a.金額=0 THEN  a.數量 ELSE 0 END AS  不計價數量,
a.金額
FROM  交易資料 a
) x
GROUP BY x.商品

我們是 Oracle/SAP 外圍系統最佳合作夥伴

0
賽門
iT邦超人 1 級 ‧ 2016-08-26 17:46:49

好奇怪的要求......太奇怪了,以致.....我故障了,無法回答~~~~

/images/emoticon/emoticon38.gif

0
尼克
iT邦大師 1 級 ‧ 2016-08-26 18:14:41

我猜你是否是要我猜你是否是要ROW TO COLMN 的 PIVOT 功能?
Three Ways To Transpose Rows Into Columns in Oracle SQL

隨意吧...

select 
	銷售商品
	,Sum(數量) as 數量
	,Sum(無金額數量) as 無金額數量
	,Sum(金額) as 金額
from (
	select
		銷售商品
		,(Case when 金額 > 0 then Sum(數量) else 0 end) as 數量
		,(Case when 金額 = 0 then Sum(數量) else 0 end) as 無金額數量
		,Sum(金額) as 金額
	from (
		select *
		from ((
			select '衣服' 銷售商品,3 as 數量 ,0 as 金額
		)union(
			select '衣服' 銷售商品,2 as 數量 ,200 as 金額
		)) as k
	) as k
	group by 銷售商品,金額
) as k
group by 銷售商品
2
一級屠豬士
iT邦大師 1 級 ‧ 2016-08-26 18:21:27

create table ithelp160826 (
  id smallserial
, prod text not null
, qty int not null
, amount int not null
);

insert into ithelp160826 values
(default, '衣服', 3, 0),
(default, '衣服', 2, 200);

with 
x as (
select prod
     , sum(qty)
  from ithelp160826
 where amount = 0
 group by prod
),
y as (
select prod
     , sum(qty)
  from ithelp160826
 where amount != 0
 group by prod
),
z as (
select prod
     , sum(amount)
  from ithelp160826
 group by prod
)
select z.prod as "銷售商品"
     , y.sum as "數量"
     , x.sum as "無金額數量"
     , z.sum as "金額"
  from x
     , y
     , z
 where x.prod = y.prod
   and y.prod = z.prod;

+----------+------+------------+------+
| 銷售商品 | 數量 | 無金額數量 | 金額 |
+----------+------+------------+------+
| 衣服     |    2 |          3 |  200 |
+----------+------+------------+------+
(1 row)
   

給你打個評語:易如反掌
/images/emoticon/emoticon33.gif

尼克 iT邦大師 1 級 ‧ 2016-08-29 08:58:17 檢舉

/images/emoticon/emoticon12.gif

魯大 iT邦高手 1 級 ‧ 2016-08-30 14:53:05 檢舉

/images/emoticon/emoticon12.gif

我要發表回答

立即登入回答