2015-06-03 85 views
0

我需要在以下格式打印兩份報告:報告中使用TSQL

   Header 1          
      Header 2    DateTime 

SN  Employee/Manager Salary Bonus 
A  John/Susan  60000  5000 
B  Jenny/Gary  70000 10000 
Total  2    130000 15000 

Total Bonus : 15000 
Total Records : 2 


      Header 1          
      Header 2    DateTime 

SN   Employee/Manager Salary Bonus 
Successful    
A   John/Susan   60000  5000 
Subtotal: 1 

Struggling 
B   John/Susan   70000 10000 
Subtotal: 1 

Total   2    130000 15000 

我都存在於單個表所需要的信息。

編碼之前,我想問TSQL專家如果這是TSQL中可能的東西嗎?如果不是,我會使用過程式編程語言來實現這一點。

EDIT1:我不需要在前端顯示。只需將其轉儲到.txt文件即可。 這個例子的模式將是: SN從業人員管理者的工資獎金

+0

我們可以使用T-sql和ROLL UP選項,但是它取決於您如何使用所需參數在前端進行綁定 – mohan111

+0

如果您包含表模式,則這將更容易回答。 –

+0

我只是增加了一些信息彌敦道 –

回答

0

我只是顯示你有一些示例數據如何在T-SQL的方式進行,但是這一切都取決於你的需求如何綁定列在前端

只是根據你的需求的假設,我們可以用分組或ROLLUP

DECLARE @t TABLE(SN varchar(5),NAME NVARCHAR(MAX),datee date,sal money,bonus money) 

insert INTO @t SELECT 'A','John/Susan','2012-01-02',6000,5000 
insert INTO @t SELECT 'B','Jenny/Gary','2012-01-02',7000,10000 

SELECT SN,count(SN)SubTotal, 
    Name, 
    (datee), 
    SUM (sal)salary,SUM(bonus) Bonus 
FROM @t 
GROUP BY 
    ROLLUP((SN,NAME, datee)) 

SELECT SN,count(SN)SubTotal, 
    Name, 
    (datee), 
    SUM (sal)salary,SUM(bonus) Bonus 
FROM @t 
GROUP BY 
    GROUPING SETS((SN,NAME ,datee),()) 
0

做,如果你足夠努力,你可以完成在SQL幾乎所有的東西,但是,這並不意味着它是一個好主意。 SQL的目的是以表格的形式返回一組數據。爲了得到你想要的東西,你基本上正在返回一列varchar結果集。這不是一個好主意。您應該將原始查詢結果返回給執行此類格式設置的某個客戶端。這就是爲什麼我們有Reporting Services,Crystal Reports和C#。

是的ROLLUP可以完成小計,但使用它比麻煩更容易理解數據。最重要的是,您在示例中顯示了頁眉和頁腳,使用TSQL並不容易。

我的建議,使用更適合這個的工具。