Я хотел бы создать подзадачу для столбца с определенным счетчиком.Subselect в SQL Server
Обычно это не проблема, но в этом случае мне нужен идентификатор текущего столбца в качестве фильтра.
К примеру, у меня есть таблица Rooms
:
RoomID Name
---------------
1 Room 1
2 Room 2
3 Room 3
Все номера имеют клиентов, например
ClientID RoomID ClientName
-------------------------------
1 1 Client1
2 1 Client2
3 2 Client3
И есть ClientUsage
стол, например
ID ClientID StateID
-------------------
1 1 1
2 2 1
3 3 0
Теперь я хочу показать все комнаты, включая количество всех клиентов (для примера ле StateID = 1
)
Результат должен быть:
ID, RoomID, CountOfClients, CountOfClientsWithStateID = 1
Первые 3 вещи довольно легко, с помощью этого:
SELECT
ID, Name,
(SELECT COUNT(*) AS Count
FROM Client
WHERE (RoomID = T1.ID)) AS ClientCount
FROM
Room AS T1
Но теперь мне нужно Client.ID
как ссылку, чтобы получить состояние - любые идеи, как это решить?
Пытаясь что-то вроде этого, но это не работает:
SELECT
ID, Name,
(SELECT COUNT(*) AS Count
FROM Client AS T2
WHERE (RoomID = T1.ID)) AS ClientCount,
(SELECT COUNT(*) AS Count
FROM ClientUsage
WHERE (ClientUsage.ClientID = T2.ID) AND (StateID = 1)) AS ClientFreeCount
FROM
Room AS T1
Заранее спасибо
Спасибо за ваш ответ ! Но результат легок, но странный. Теперь у меня есть результат: Имя комнаты, CountofClients, CountOfClientsWithStateID = 1 -> Room1, 16, 831 (это невозможно, оно должно быть не более 16) - в моей таблице ClientState есть ровно столько же счетчиков. Есть идеи? Для ВСЕХ номеров его 831 (но есть еще только 512 клиентов) – derdida
Я вижу ... Извините, произошла ошибка. Я собираюсь отредактировать его –
У него не было условия для второго подзаголовка. Не могли бы вы попробовать сейчас? –