SQL способ вернуть альтернативные значения, если многие ответы соответствуют запросу - PullRequest
0 голосов
/ 14 мая 2019

Я создаю непрерывную форму в стиле «плоский файл» для заказа задачи, основанную на запросе, и у меня есть случаи, когда у меня есть два заказа, которые имеют несколько совпадений. В частности, ограничения округа, маршрута и почтовой мили могут составлять один-несколько заданий (ID). В настоящее время запрос выводит что-то вроде:

| ID | County | Route | BegPM | EndPM |
|101 | HUM    |   254 |  0.00 |   0.4 |
|102 | SOL    |   012 |  26.3 |  26.4 |
|102 | SAC    |   012 |  0.00 |   0.4 |
|103 | ELD    |   050 |  43.6 |  43.7 |
|103 | ELD    |   050 |  36.1 |  36.3 |
|104 | YUB    |   020 |   0.4 |  14.3 |
|104 | SUT    |   099 |  37.0 |  39.2 |

Я бы хотел, чтобы заказы с несколькими записями округа, маршрута или постмили были одним результатом, и "VAR" заменял бы соответствующие значения. Примеры:

| ID | County | Route | BegPM | EndPM |
|101 | HUM    |   254 |  0.00 |   0.4 |
|102 | VAR    |   012 |   VAR |   VAR |
|103 | ELD    |   050 |   VAR |   VAR |
|104 | VAR    |   VAR |   VAR |   VAR |

Я изучал вложенные операторы select и / или IIF в самом запросе или в критериях, но этот вопрос меня озадачил, поскольку я относительно новичок в SQL. Заранее спасибо!

1 Ответ

1 голос
/ 14 мая 2019

Вы можете использовать iif() и некоторые типы преобразования:

select id, county, route,
       iif(min(BegPM) = max(BegPM), str(BegPM), "Var") as BegPM,
       iif(min(EndPM) = max(EndPM), str(EndPM), "Var") as EndPM
from t
group by id, county, route
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...