2015-07-22 172 views
0

我想實現的是根據列'iSellthruTxnDateKey'中相應的DISTINCT值求和列'nTxnCount'。SQL DISTINCT一列,SUM另一個

以一種更簡單的方式告訴它。我試圖找到列A的不同值,然後列B中的值將被總結。

| A | B | 
-------------- 
| Dog | 1 | 
| Cat | 5 | 
| Horse | 10 | 
| Horse | 10 | 
| Dog | 1 | 
| Snake | 5 | 

會發生什麼......

| A | B | 
-------------- 
| Dog | 1 | 
| Cat | 5 | 
| Horse | 10 | 
| Snake | 5 | 

最終結果.. 這是聚合值以上


下面的總和是我測試查詢:

SELECT ftKPI.sCompanyCode AS 'Country' 
     , dmCus.sFQOutletOnlineStore AS 'Outlet Online Store' 
     , dmCus.sDistributionChannel AS 'Distribution Channel' 
     , dmCus.sGlobalRetailSegmentName AS 'Global Retail Segment' 
     , dmCus.sCustomerCode AS 'Customer Code' 
     , dmCus.nsCustomerName AS 'Customer Name' 
     , SUM(DISTINCT ftKPI.nTxnCount) 
    FROM ftRetailKPI ftKPI 
     INNER JOIN dmCalendar dmCal (NOLOCK) on ftKPI.iSellthruTxnDateKey = dmCal.iCalendarKey 
     INNER JOIN dmProduct dmPRd (NOLOCK) on ftKPI.iProductKey = dmPrd.iProductKey 
     INNER JOIN dmCustomer dmCus (NOLOCK) on ftKPI.iCustomerKey = dmCus.iCustomerKey 
     INNER JOIN dmProductSalesArea dmPSA (NOLOCK) ON ftKPI.iProductSalesAreaKey = dmPSA.iProductSalesAreaKey 
     INNER JOIN ftExchangerate XRate (NOLOCK) on XRate.sYearMonth = '201506' AND ftKPI.sCompanyCode = XRate.sCompanyCode 
    WHERE (ftKPI.sCompanyCode IN ('LSA') OR dmCus.sCountryName IN ('Australia')) 
     AND dmPRd.sProductCategoryName IN ('Tops', 'Bottoms', 'Accessories') 
     AND dmCus.sDistributionChannel IN ('DI') 
     AND dmCus.sGlobalRetailSegmentName IN ('Co. Operated Comm') 
     AND dmCus.sFQOutletOnlineStore IN ('First Quality Store') 
     AND dmCal.sFiscalYYYY IN ('2015') 
     AND dmCal.sFiscalQQ IN ('Q1', 'Q2') 
     AND dmCal.sFiscalWeek IN ('Wk01') 
     AND dmCus.sCustomerCode IN ('0020017262') 
    GROUP BY ftKPI.sCompanyCode 
     , dmCus.sCountryName 
     --, dmPrd.sBrandName 
     , dmCus.sCustomerCode 
     , dmCus.nsCustomerName 
     , dmCus.nsCustomerNameLocal 
     , dmCus.sDistributionChannel 
     , dmCus.sGlobalRetailSegmentName 
     , dmCus.sRetailSegmentGroupName 
     , dmCus.sFQOutletOnlineStore 
     , dmCus.sCustomerCode 
+0

在B中的例子值不總結... – i486

+0

那麼你想在哪裏顯示所有的總和?也許你不明白sql的概念... – danvasiloiu

+0

在我的例子中,它是總結。我提到最終的結果是21.我可能不太瞭解SQL,但我有它的概念。 –

回答

1

好吧,我想我知道你想要什麼。 你必須在這裏做這個

select sum(colB) from 
(Select distinct * from tableA) x 

和演示讓您可以更好地理解:FIDDLE DEMO

+0

我將子查詢想法添加到了我的實際查詢中。但是,我收到了巨大的數額。在我的查詢中,我添加了這個'JOIN(SELECT DISTINCT iSellthruTxnDateKey,nTxnCount FROM ftRetailKPI)b ON ftKPI.iSellthruTxnDateKey = b.iSellthruTxnDateKey'並在SELECT上添加了SUM(b.nTxnCount)。請注意,iSellthruTxnDateKey = Column A,nTxnCount = Column B –

+0

我真的沒有得到你想要做的事情......而且你的選擇很大,並且在那裏有很多連接......所以我不知道 – danvasiloiu