iT邦幫忙

0

SQL 語法,加總計算。 二個加總欄位條件不一的情況。

miels 2014-04-17 15:08:2357328 瀏覽

資料如下:
姓名 欄位1 欄位2 條件
張三 100 100 0
李四 500 500 0
張三 800 800 1
李四 500 500 1

想達成成的資料如下:
姓名 加總欄位1 加總欄位2
張三 100 900
李四 500 1000

設計當中,我是採用先使用 SQL 加總計算完後,再一次使用 SQL 計算欄位二再把原先的資料中的欄位二覆蓋。
請問...SQL 有語法可以達到一次就得到我要的資訊嘛???

魯大 iT邦高手 1 級 ‧ 2014-04-17 15:21:01 檢舉
看不懂你要表達的內容
疑惑
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
11
rogeryao
iT邦超人 8 級 ‧ 2014-04-18 14:00:34
最佳解答

hitomitanaka 的語法 for mysql 是正確的;
另一語法

select name,sum(case WHEN cond=0 then col1 else 0 end) AS '加總欄位1',
sum(col2) AS '加總欄位2'
from ithelp040417
group by name

CASE 方式是通用的.
好答案.

16
一級屠豬士
iT邦大師 1 級 ‧ 2014-04-17 15:32:51

猜猜看是不是這樣.

<pre class="c" name="code">CREATE TABLE ithelp040417(
name CHAR(4) NOT NULL,
col1 INT UNSIGNED NOT NULL,
col2 INT UNSIGNED NOT NULL,
cond TINYINT NOT NULL
);

INSERT INTO ithelp040417(name, col1, col2, cond) VALUES
('張三', 100, 100, 0),
('李四', 500, 500, 0),
('張三', 800, 800, 1),
('李四', 500, 500, 1);

SELECT name
     , SUM(IF(cond = 0,col1, 0)) AS '加總欄位1'
     , SUM(col2) AS '加總欄位2'
  FROM ithelp040417
 GROUP BY name;

+--------+---------------+---------------+
| name   | 加總欄位1     | 加總欄位2     |
+--------+---------------+---------------+
| 張三   |           100 |           900 |
| 李四   |           500 |          1000 |
+--------+---------------+---------------+
mutualpak iT邦研究生 5 級 ‧ 2014-04-18 10:45:33 檢舉

怪怪的...
[SQL] SELECT name,sum(if(cond=0),col1,0)), SUM(col2)
FROM ithelp040417
GROUP BY name

[Err] 42000 - [SQL Server]接近關鍵字 'if' 之處的語法不正確。
42000 - [SQL Server]接近 ',' 之處的語法不正確。

我是以MySQL為範例, SQL Server 沒support IF().
你可以另外改成SQL Server語法的.
另外,你並未明確表達出,你要計算的邏輯.
我只好用猜的.

外獅佬 iT邦大師 1 級 ‧ 2014-04-20 22:39:14 檢舉

SQL Server要把『IF』改成『IIF』

8
外獅佬
iT邦大師 1 級 ‧ 2014-04-17 23:51:39

樓上正解....不就是個SUM+GROUP....

我要發表回答

立即登入回答