Проблема запроса T-SQl - PullRequest
1 голос
/ 10 марта 2011

У меня есть таблица с именами CorporateTree и Production, и в таблицах есть такие данные:

Таблица: CorporateTree

DivisionName     RegionName         CommonName         BU
Central         Region 1             Raintree           101
Central         Region 1             Glenwood           102
East             Region 2           Balsa              201
East             Region2            Warren             202

Таблица: Производство

ProdID     BU    ResidentName  ResidentID       Room
1           101   Smith, Jeff   234859           1002-A
2           202   Mill, Steve   125467           2002-B
3           101   Sisk, Paul    4383943          1009-C
4           101   Sims, Gary    384393           1010-A
5           202   Mason, Sam    32902            1012-A

Я хочу получить вывод, подобный этому:

Division      Region    Facility    Business Unit   ResidentCount   Status
Central      Region 1  Glenwood 102                 0            Flag
Central      Region 1  Raintree 101                 3    
East          Region 2  Balsa      201                 0            Flag
East          Region 2  Warren     202                 2     

если количество резидентов равно нулю (0), выведите значение «Flag» в статусе

Я пробовал этот запрос:

SELECT ct.DivisionName,ct.RegionName,ct.CommonName AS Facility,ct.BU AS [Business Unit],
(SELECT ROW_NUMBER() OVER (PARTITION BY p.BU ORDER BY p.BU DESC)) AS ResidentCount FROM 
CorporateTree ct INNER JOIN Production p ON 
 p.Bu = ct.BU

Но, похоже, это не работает? Может ли кто-нибудь помочь мне в этом?

1 Ответ

1 голос
/ 10 марта 2011

Вы хотите использовать левое соединение для учета любых бизнес-единиц, у которых нет строк в производственной таблице.

SELECT ct.DivisionName, ct.RegionName, ct.CommonName AS Facility, ct.BU AS [Business Unit],
       COUNT(p.BU) as ResidentCount,
       CASE WHEN COUNT(p.BU) = 0 THEN 'Flag' ELSE '' END AS Status
    FROM CorporateTree ct 
        LEFT JOIN Production p 
            ON p.BU = ct.BU
    GROUP BY ct.DivisionName, ct.RegionName, ct.CommonName, ct.BU
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...