Как производить доклады с перекрещенными линиями?

Хорошие,

я считаю следующие подмостки частью моей базы данных

Tablas В этом случае это система внимания tickets, где таблица Ticket имеет как признаки TCKT_FFINAL, которые это дата, которая регистрируется автоматически однажды, закрылся ticket, который в свою очередь присоединен к РАБОЧЕМУ (это тот, который закрывает tickets).

То, что я ищу, состоит в том, чтобы производить поле ввода власти или поле ввода доклада, она состоит веб-страницей, где введя информацию в компьютер в выбор Недельного Доклада, явитесь автоматически полем ввода с настоящей неделей как та, которую я присоединяю внизу.

introducir la descripción de la imagen aquí

В этом случае он был бы докладом настоящей недели, где первая колонна - код всех рабочих, Ваши имена и начиная с третьей это подсчет tickets, обслуженных из-за каждого дня недели.

Другой доклад, который я хочу получить, - месячный, в этом случае он переместил бы его дату через DatePicker, и что мое приложение получило настоящий месяц, и что я разработал доклад с первого дня до последнего.

introducir la descripción de la imagen aquí

Я делаю консультацию в SQL, но я прочитал, что есть книжные магазины или программные средства, которые позволяют тебе делать этот тип докладов более быстрой и простой формы, правда состоит в том, что я не нахожу специфической информации и прибегаю к Вам для того, чтобы они предложили мне Вашу помощь.

Я использую Java JSP, SQL Server.

2
задан 10.01.2017, 19:19
0 ответов

Будучи исследовано немного в документации SQL Server, особенно ЦЕНТР, как кто-то прокомментировал, мне удалось произвести этот код, что я думаю, что он может помогать:

CREATE TABLE Reporte
(
Operario_ID int, 
Operario varchar(50), 
Fecha date, 
Ticket int
)

INSERT INTO Reporte VALUES
(1, 'Luisa', '2016/01/01', 2),
(2, 'Roberto', '2016/01/01', 3),
(3, 'Gerardo', '2016/01/02', 1),
(4, 'Pedro', '2016/01/02', 2),
(5, 'Margarita', '2016/01/03', 4),
(6, 'Juliana', '2016/01/03', 3),
(1, 'Luisa', '2016/01/04', 1),
(2, 'Roberto', '2016/01/04', 4),
(3, 'Gerardo', '2016/01/05', 3),
(4, 'Pedro', '2016/01/05', 1),
(5, 'Margarita', '2016/01/06', 2),
(6, 'Juliana', '2016/01/06', 4),
(1, 'Luisa', '2016/01/07', 2),
(2, 'Roberto', '2016/01/07', 2),
(3, 'Gerardo', '2016/01/08', 2),
(4, 'Pedro', '2016/01/08', 1),
(5, 'Margarita', '2016/01/09', 2),
(6, 'Juliana', '2016/01/09', 1),
(1, 'Luisa', '2016/01/10', 1),
(2, 'Roberto', '2016/01/10', 4),
(3, 'Gerardo', '2016/01/11', 3),
(4, 'Pedro', '2016/01/11', 1),
(5, 'Margarita', '2016/01/12', 2),
(6, 'Juliana', '2016/01/12', 4)
GO


WITH ctePivot (Fecha, DiaSem, MaxFecha) AS
(
    SELECT Fecha, DATENAME(WEEKDAY, Fecha) AS DiaSem, MAX(Fecha) as MaxFecha FROM Reporte GROUP BY Fecha
    UNION ALL
    SELECT DATEADD(dd, 1, Fecha), DATENAME(WEEKDAY, DATEADD(dd, 1, Fecha)), MaxFecha FROM ctePivot WHERE Fecha < MaxFecha
)

SELECT * INTO #Fechas FROM ctePivot

SELECT * FROM
(
    SELECT Reporte.Operario_ID, Reporte.Operario, Ticket, DiaSem PivotDiaSem
    FROM #Fechas LEFT JOIN Reporte ON #Fechas.Fecha = Reporte.Fecha
) X
PIVOT
(
    SUM(Ticket)
    FOR PivotDiaSem IN ([Sunday], [Monday], [Tuesday], [Wednesday], [Thursday], [Friday], [Saturday])
) P;

--DROP TABLE #Fechas

Уже он состоял бы в том, чтобы налаживать это немного для того, чтобы он покрыл твою необходимость.

Привет.

1
ответ дан 03.12.2019, 17:48
  • 1
    Большое спасибо compañ ero, он пошел одного из этих примеров, которых я guié! :) –  18.01.2017, 15:29