Мне нужно присоединиться к самой таблице при объединении других таблиц и выполнять подсчет для них. Кстати, я использую SQL Server 2008 R2.
Текущее состояние - у меня есть три таблицы MergedSessionsID, EventsSeparated и EventsDescription.
MergedSessionsID, здесь я манипулирую данными - сеансы, по сути, указав название компании и время сеанса (см. Ниже пример данных).
Таблица событий EventsSeparated связывается с MergedSessionsID. По сути, у сеанса может быть одно или несколько событий.
Таблица EventsDescription содержит описание события, например, и то, и другое произошло с пользователем.
Моя цель здесь - понять общее количество событий, произошедших за определенный период времени. Приложение 1 является результатом выполнения запроса ниже.
Однако я также хочу сравнить старые данные с новыми данными и посмотреть, как изменилось количество событий. Так что, как и в Приложении 2, это то, что, как я полагаю, хотелось бы представлению - показывать PreCounter для данных в марте 2210 года и PostCounter для данных в апреле 2210 года.
Каков наилучший способ реализовать это?
SELECT E.[Event]
,COUNT(1) AS Counter
,ED.[Event Description]
FROM [ShipCompanies].[dbo].MergedSessionsID AS S
INNER JOIN [ShipCompanies].dbo.EventsSeparated AS E
ON S.ID = E.ID
INNER JOIN [ShipCompanies].dbo.EventDescription AS ED
ON E.[Event] = ED.[Unique ID]
WHERE S.Company = 'SuperSpaceShipOne'
AND S.[Session Time] BETWEEN '2210-03-02' AND '2210-03-05'
GROUP BY E.[Event], ED.[Event Description]
ORDER BY E.[Event]
SELECT * FROM MergedSessionsID
ID Company Session Time
1 SuperSpaceShipOne 2210-03-05
2 SuperSpaceShipOne 2210-03-03
3 SuperSpaceShipOne 2210-03-02
4 SuperSpaceShipOne 2210-04-01
5 SuperSpaceShipOne 2210-04-02
6 SuperSpaceShipOne 2210-04-03
SELECT * FROM EventsSeparated
ID Event
1 2000
2 2001
2 2002
3 2001
4 2002
5 2002
6 2002
SELECT * FROM EventDescription
Unique ID Event Description
2000 'User Entered the Pod'
2001 'User Initiated Launching Sequence'
2002 'User Error encountered'
Приложение 1. Сводная таблица объединенных результатов (что у меня сейчас)
Event Counter Event Description
2000 1 'User Entered the Pod'
2001 2 'User Initiated Launching Sequence'
2002 1 'User Error encountered'
Приложение 2. Сводная таблица объединенных выходных данных (что я хочу получить)
Event PreCounter Event Description PostCounter
2000 1 'User Entered the Pod' 0
2001 2 'User Initiated Launching Sequence' 0
2002 1 'User Error encountered' 3