我想计算项目的总和,那些值大于零。以下数据和示例如下所示....我无法以此格式获取数据。所以请帮助我......
原始数据
---------------------------------------
Id Item_1 Item_2 Item_3 Item_4
---------------------------------------
1 0 500 0 0
2 200 0 0 0
3 350 0 0 0
4 0 0 500 0
5 0 300 0 0
6 0 0 0 400
7 0 0 200 0
---------------------------------------
我想要这种格式
--------------------
Count ITEM SUM
--------------------
2 Item_1 550
2 Item_2 800
2 Item_3 700
1 Item_4 400
答案 0 :(得分:1)
您可以在此设计中使用以下查询:
select count(Item_1) as Count, 'Item_1' as ITEM, sum(Item_1) as SUM from table_name
UNION
select count(Item_2) as Count, 'Item_2' as ITEM, sum(Item_2) as SUM from table_name
UNION
select count(Item_3) as Count, 'Item_3' as ITEM, sum(Item_3) as SUM from table_name
UNION
select count(Item_4) as Count, 'Item_4' as ITEM, sum(Item_4) as SUM from table_name
但桌子设计不合适。它应该如下所示:
create table my_table
(id int, item_name varchar(50), item_sold int);
然后您可以使用case语句来比较item_name。
答案 1 :(得分:0)
首先请至少在下面标准化数据库。
项目表
--------------
id item
--------------
1 Item 1
2 Item 2
3 Item 3
--------------
items_values表
--------------------------
id item_id item_value
--------------------------
1 1 0
2 1 200
3 3 350
--------------------------
然后你可以简单地得到如下的结果。
SELECT COUNT(items_values.item_value) AS ValueCount, items.item, SUM(items_values.item_value) FROM items_values
INNER JOIN items ON items_values.item_id = items.id
GROUP BY items.id;