iT邦幫忙

0

我有一個資料表裡面數據500多筆
他是根據使用者設定所產出資料,在匯出資料產生表
https://ithelp.ithome.com.tw/upload/images/20190215/20109425BEBIDSHRTb.jpg
上面顯示畫面是單一,一月份有9筆資料在上面
2月1筆
當使用者任意點4月或5月等等...,上面數據有會變更

為了更改畫面一月把上面9筆數據做相加總,相加結果為105.2
就是同月份數據做相加總

想請問SQL SUM語法該怎麼下比較好
我goole都是一加幾筆上去,但我數據太多不知道該怎麼下

 string str = "SELECT SUM(CASE WHEN WEIGHT_SUM = '' and WEIGHT_SUM = '' THEN WEIGHT_SUM + WEIGHT_SUM ELSE 0 END) total where (Format(DISPOSE_YEAR_MONTH) FROM dbo.TRRDCB12 )";

我知道上面code下錯的特來請教各位大家

小魚 iT邦高手 1 級 ‧ 2019-02-15 16:54:10 檢舉
如果兩個都是 '', 那就相加(相加不還是 '' 嗎?)
所以得到的結果只會是 '' 跟 0
(這個欄位格式是什麼?? 字串跟數字的混合)
又看了一下, 為什麼兩個判斷都是同一個欄位...

1 個回答

1
暐翰
iT邦大師 1 級 ‧ 2019-02-16 10:26:01

為了更改畫面一月把上面9筆數據做相加總,相加結果為95.15

12.65+17.67+9.87+12.74+11.4+7.68+11.5+18.49+3.02 = 105.02

想請問SQL SUM語法該怎麼下比較好
我goole都是一加幾筆上去,但我數據太多不知道該怎麼下

因為沒有提供數據結構跟期望值,這邊只能猜測跟提供範例
解決方式主要使用Year跟Month funtion來做Group + Sum

--測試資料
CREATE TABLE T
	([DateTime] datetime, [Value] float)
;
	
INSERT INTO T
	([DateTime], [Value])
VALUES
	('2019-01-03 00:00:00', 12.65),
	('2019-01-05 00:00:00', 17.67),
	('2019-01-07 00:00:00', 9.87),
	('2019-01-08 00:00:00', 12.74),
	('2019-01-09 00:00:00', 11.4),
	('2019-01-11 00:00:00', 7.68),
	('2019-01-13 00:00:00', 11.5),
	('2019-01-21 00:00:00', 18.49),
	('2019-01-25 00:00:00', 3.02),
	('2019-02-03 00:00:00', 10.93)
;

--查詢邏輯
select Year([DateTime]),Month([DateTime]),sum([Value]),count(1)
from T
group by Year([DateTime]),Month([DateTime])

db<>fiddle 線上測試連結

看更多先前的回應...收起先前的回應...
ted8224 iT邦新手 5 級 ‧ 2019-02-23 11:08:10 檢舉
select  Year(DELIVER_DATE),  Month(DELIVER_DATE),sum(WEIGHT_SUM) from [2mlAppDatDb].[dbo].[TRRDCB12] group by  Year (DELIVER_DATE), Month (DELIVER_DATE)" 

https://ithelp.ithome.com.tw/upload/images/20190223/2010942598XK7P4IHR.jpg
我的語法下這樣
因為我有一個功能是選擇日期起訖時間選擇區間,可是顯示結果卻是這樣
https://ithelp.ithome.com.tw/upload/images/20190223/20109425WYGsbOwr9U.jpg

想要達成畫面是這樣子的
https://ithelp.ithome.com.tw/upload/images/20190223/20109425ZG3fjifBdH.jpg

暐翰 iT邦大師 1 級 ‧ 2019-02-23 11:24:29 檢舉

這個屬於前端畫面邏輯,而你沒有提供前端如何顯示的程式碼,所以我無法知道如何幫你解決
但是單純從資料面看是正確的

ted8224 iT邦新手 5 級 ‧ 2019-02-23 11:35:11 檢舉

我跟你一樣下語法也沒有資料行名稱/images/emoticon/emoticon02.gif
我是改後端code,前端畫面跟code基本都工具箱拉一拉就好了

暐翰 iT邦大師 1 級 ‧ 2019-02-23 11:39:45 檢舉

ted8224 沒有資料行名稱,可以使用as解決:

select  Year(DELIVER_DATE) as year,  Month(DELIVER_DATE) as month,sum(WEIGHT_SUM) as total from [2mlAppDatDb].[dbo].[TRRDCB12] group by  Year (DELIVER_DATE), Month (DELIVER_DATE)

我要發表回答

立即登入回答