2015-06-03 3 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 Сотрудник менеджер Зарплата Bonus

+0

мы можем использовать T-sql с опцией ROLL UP, но вам нужно, как связать в переднем конце с использованием необходимых параметров. – mohan111

+0

Это было бы легче ответить, если бы вы включили схему таблицы. –

+0

Я просто добавил дополнительную информацию Nathan –

ответ

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.

Мой совет, используйте инструмент, который лучше подходит для этого.

Смежные вопросы