SQL в Excel возвращаемое поле, если соответствует условие - PullRequest
0 голосов
/ 11 ноября 2018

Мне нужно вернуть имя проекта, если в контракте есть только один проект, в противном случае вернуть счетчик проекта.

Contract, Project, Rev
con1    , prj1   , 5
con1    , prj2   , 20
con2    , prj3   , 30

Вероятный результат:

Contract, Project, Sum of Rev 
con1    , 2      , 25
con2    , prj3   , 30

Пока у меня есть это:

SELECT Contract, IIF(Count(Project)=1,Project,COUNT(Project)) AS 
       ProjectCount, SUM(Rev) AS Sum of Rev 
FROM Table1 
GROUP BY Contract 

Error picture

Я также пытался заменить Project на функцию VLOOKUP, но он был только в виде текста, а не в расчете.

1 Ответ

0 голосов
/ 11 ноября 2018

Попробуйте это:

SELECT Contract, 
       IIF(Count(Project) = 1, MAX(Project), COUNT(Project)) AS ProjectCount,
       SUM(Rev) AS Sum of Rev 
FROM Table1 
GROUP BY Contract ;

Если у вас есть только один проект, то максимальное значение равно названию проекта.

Вам может потребоваться преобразовать MAX(Project) в строку. Стандартный синтаксис будет: CAST(MAX(Project) as VARCHAR(32)). Однако этот синтаксис может быть другим в используемой вами базе данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...