我需要从销售员的2列订单表中获取现金和支票金额的总和。
我的桌子是这样的:
Salesman A Cash 21151
Salesman B Cash 34510
Salesman C Cash 21252
Salesman D Cash 13356
Salesman A Cheque 13944
Salesman B Cheque 87368
Salesman C Cheque 20182
Salesman D Cheque 23862
Run Code Online (Sandbox Code Playgroud)
SQL:
SELECT Ca.Cash, Cr.Credit FROM
(SELECT Salesman, PayMode, SUM(Collection) AS Cash
FROM Prospect_Detail WHERE(Purpose = 'Collections') AND (PayMode = 'Cash')
GROUP BY Salesman, PayMode) AS Ca
CROSS JOIN
(SELECT Salesman, PayMode, SUM(Collection) AS Credit
FROM Prospect_Detail WHERE(Purpose = 'Collections') AND (PayMode = 'cheque')
GROUP BY Salesman, PayMode) Cr
Run Code Online (Sandbox Code Playgroud)
我需要得到这样的结果:
Salesman Cash Cheque
Salesman A 21151 13944
Salesman B 34510 87368
Salesman C 21252 20182
Salesman D 13356 23862
Run Code Online (Sandbox Code Playgroud)
您可以尝试以下方法。
create table #Temp (name varchar(50), collectionType varchar(10), amount int)
insert into #Temp values
('Salesman A', 'Cash', 21151),
('Salesman B', 'Cash', 34510),
('Salesman C', 'Cash', 21252),
('Salesman D', 'Cash', 13356),
('Salesman A', 'Cheque', 13944),
('Salesman B', 'Cheque', 87368),
('Salesman C', 'Cheque', 20182),
('Salesman D', 'Cheque', 23862)
SELECT name, Cash, cheque
FROM
(SELECT collectionType, name , amount
FROM #Temp) AS SourceTable
PIVOT
(
SUM(amount)
FOR collectionType IN ( Cash , Cheque)
) AS PivotTable;
Run Code Online (Sandbox Code Playgroud)
输出如下图所示
name Cash cheque
--------------------------
Salesman A 21151 13944
Salesman B 34510 87368
Salesman C 21252 20182
Salesman D 13356 23862
Run Code Online (Sandbox Code Playgroud)
您可以在此处找到现场演示。
| 归档时间: |
|
| 查看次数: |
71 次 |
| 最近记录: |