iT邦幫忙

1

SQL合計問題

如圖所示,code一樣的但是加總之後不會把所有一樣的code加總在一起,請問該如何解決?
圖一-尚未合計
https://ithelp.ithome.com.tw/upload/images/20200616/20127958vVIOXiC7Gc.png

圖二-已合計但是code同樣的未加總
https://ithelp.ithome.com.tw/upload/images/20200616/20127958HnkC5flSvA.png

看更多先前的討論...收起先前的討論...
尼克 iT邦大師 1 級 ‧ 2020-06-16 11:10:17 檢舉
奇怪了!無法刪除!
rogeryao iT邦超人 8 級 ‧ 2020-06-16 12:52:56 檢舉
這兩個表有哪些欄位 , 可以列出來嗎 ?
那就..二次加總就好了吧..
select DiscountPrice
,Sum(Cash) Cash
,Code
,StartDate
,EndDate
from (
....
) k
group by DiscountPrice
,Code
,StartDate
,EndDate
Lungiqa iT邦新手 5 級 ‧ 2020-06-16 14:27:48 檢舉
[TradeDisscountStatisticsID]
,[DiscountCode]
,[CategoryType]
,[DiscountType]
,[ConditionType]
,[DiscountPrice]
,[DiscountCount]
--------------------我是分隔線------------------
[Code]
,[Name]
,[DiscountType]
,[CategoryType]
,[DiscountClass]
,[AllowMutiple]
,[AutoDiscount]
,[Weighted]
,[LimitedTimes]
,[Mode]
,[StartDate]
,[EndDate]
,[Disable]
,[DiscountPhase]
,[NickName]
,[IsTemplate]
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中
0
rogeryao
iT邦超人 8 級 ‧ 2020-06-16 15:14:45
最佳解答
SELECT A.CategoryType,A.DiscountType,A.Code,A.StartDate,A.EndDate,B.DiscountPrice,
SUM(B.DiscountPrice) AS TatalDiscountPrice
FROM [HQInformation].[dbo].[TradeDiscountDetailStatistics] AS B
LEFT JOIN [HQMasterFile].[dbo].[Discount] AS A
ON B.CategoryType=A.CategoryType AND B.DiscountType=A.DiscountType 
GROUP BY A.CategoryType,A.DiscountType,A.Code,A.StartDate,A.EndDate,B.DiscountPrice
ORDER BY A.Code ASC

如果 Discount 內的 Code 就是 TradeDiscountDetailStatistics 內的 DiscountCode,那就在加一個條件 B.DiscountCode=A.Code

DEMO

或是

SELECT A.Code,A.StartDate,A.EndDate,B.DiscountPrice,
SUM(B.DiscountPrice) AS TatalDiscountPrice
FROM [HQInformation].[dbo].[TradeDiscountDetailStatistics] AS B
LEFT JOIN [HQMasterFile].[dbo].[Discount] AS A
GROUP BY A.Code,A.StartDate,A.EndDate,B.DiscountPrice
ORDER BY A.Code ASC

DEMO

Lungiqa iT邦新手 5 級 ‧ 2020-06-16 17:16:37 檢舉

感謝大大回答
最後修改完如下
不吝指教

select
t.StoreCode as "門店代號"
,t.StoreName as "門店名稱"
,t.ProductName as "產品名稱"
,c.DiscountPrice as "折扣金額"
,d.Name as "活動名稱"
,d.StartDate as "活動開始"
,d.EndDate as "活動結束"
from HQInformation.dbo.TradeDiscountDetailStatistics c
join HQMasterFile.dbo.Discount d
on c.DiscountCode = d.Code
join HQInformation.dbo.TradeDiscountStatistics t
on c.TradeDisscountStatisticsID= t.ID
order by StartDate ASC;

Lungiqa iT邦新手 5 級 ‧ 2020-06-16 17:18:50 檢舉

跟你寫的略有差異,不過主要是要折扣名稱的加總以及商品的折扣金額
現在卡在商品在計算所有折扣金額的時候會因為不同的折扣名稱而不能只顯示一個商品名稱就計算出所有的折扣金額

2
wrxue
iT邦好手 1 級 ‧ 2020-06-16 11:07:16

GROUP裡只要Code就好了。

因為你GROUP裡還有DiscountPrice,每個DiscountPrice不同,不會Group在一起。

Lungiqa iT邦新手 5 級 ‧ 2020-06-16 12:08:00 檢舉

https://ithelp.ithome.com.tw/upload/images/20200616/20127958GdYQlV7kY7.png
一樣ㄟXD

wrxue iT邦好手 1 級 ‧ 2020-06-16 14:56:13 檢舉

如果只根據Code計算,就只要GROUP BY Code。還有DiscountCode是...存在的嗎?
原則上根據什麼就放什麼在GROUP,不放其它的。

Lungiqa iT邦新手 5 級 ‧ 2020-06-16 17:13:44 檢舉

DiscountCode它是存在的喔

0
做工仔人!
iT邦大師 1 級 ‧ 2020-06-16 11:07:49

二個TABLE 之問的關係沒有處理.
正常來說:會在WHERE 條件式中加二個TABLE 的關連性.
如: A.ID=B.ID 之類的語法.

Lungiqa iT邦新手 5 級 ‧ 2020-06-16 12:10:09 檢舉

因為其兩個資料表的欄位沒有相符合的,所以才沒有作關聯性,才會有這個問題,因兩資料表皆為廠商的,我需自行修改產出報表

0

都沒有人發現他的 GROUP 內有多一個 DisCountCode 嘛?
然後select沒看到 DisCountCode

我記得mssql不是會做group的欄位機制。
理論上在select的欄位要包含group的欄位,不是會出錯?
還是將其嚴格模式給拿掉了?

我要發表回答

立即登入回答