這應該工作
SELECT 'atm' type, SUM(atm) Amount FROM sales
WHERE repId= 9000 AND DATEADD(dd,0,DATEDIFF(dd,0,idate)) ='2013-08-25 00:00:00'
UNION ALL
SELECT 'cc' type, SUM(cc) Amount FROM sales
WHERE repId= 9000 AND DATEADD(dd,0,DATEDIFF(dd,0,idate)) ='2013-08-25 00:00:00'
UNION ALL
SELECT 'csh' type, SUM(csh) Amount FROM sales
WHERE repId= 9000 AND DATEADD(dd,0,DATEDIFF(dd,0,idate)) ='2013-08-25 00:00:00'
UNION ALL
SELECT 'chk' type, SUM(chk) Amount FROM sales
WHERE repId= 9000 AND DATEADD(dd,0,DATEDIFF(dd,0,idate)) ='2013-08-25 00:00:00'
,或者使用CTE:
;WITH CTE(atm,cc,csh,chk) AS
(SELECT SUM(atm),SUM(cc),SUM(csh),SUM(chk) FROM sales
WHERE repId= 9000 AND DATEADD(dd,0,DATEDIFF(dd,0,idate)) ='2013-08-25 00:00:00')
SELECT 'atm' Type,atm Amount FROM CTE
UNION ALL SELECT 'cc' ,cc FROM CTE
UNION ALL SELECT 'csh',csh FROM CTE
UNION ALL SELECT 'chk',chk FROM CTE
有什麼比使用UNION ALL更好的方法? –
我不這麼認爲,但是當您使用Common Table Expression版本時,如上所示,三個'SELECT'確實會導致SQL Server的額外工作。理論上'UNION ALL'比'UNION'便宜',但在這個例子中總共有三行,你絕對不會注意到任何差異,所以在這種情況下,你也可以使用'UNION'。 – cars10m