Получение нескольких столбцов, в которых выбрано максимальное значение, и отображение нескольких столбцов в предложении select - PullRequest
0 голосов
/ 26 мая 2020

Вот моя проблема с запросом для SQL сервера:

SELECT 
    ProductNumber, 
    AlternativeProductNumber,
    MAX(stockBalanse.physicalStockBalanse) 'PhysicalStock'
FROM 
    alternativeProducts
LEFT JOIN 
    stockBalanse ON stockBalanse.Productnumber = alternativeProducts.AlternativeProductNumber
GROUP BY
    ProductNumber

Пример результатов:

В этом случае я хочу, чтобы результат был на одну строку слева

prod1 altprod3 30

table {
  font-family: arial, sans-serif;
  border-collapse: collapse;
  width: 100%;
}

td, th {
  border: 1px solid #dddddd;
  text-align: left;
  padding: 8px;
}

tr:nth-child(even) {
  background-color: #dddddd;
}
<table style="width:100%">
  <tr>
    <th>productnumber</th>
    <th>alternateProductNumber</th>
    <th>physicalStockValue</th>
  </tr>
  <tr>
    <td>prod1</td>
    <td>altprod1</td>
    <td>10</td>
  </tr>
  <tr>
    <td>prod1</td>
    <td>altprod2</td>
    <td>20</td>
  </tr>
    <tr>
    <td>prod1</td>
    <td>altprod3</td>
    <td>30</td>
</table>

Некоторая информация в этой таблице: эта таблица является расширением моей таблицы продуктов.
У меня есть много различных альтернативных продуктов для некоторых продуктов.

То, что я пытаюсь сделать здесь: я хочу сгруппировать по productnumber (чтобы здесь оставались только отдельные значения).

И я хочу показать альтернативу, которая имеет наивысший physicalStockBalanse.

Итак, краткое резюме:

Я хочу, чтобы каждый productnumber отображал только альтернативный номер продукта, у которого самый высокий stockbalanse.

1 Ответ

0 голосов
/ 26 мая 2020

Просто используйте агрегирование:

SELECT ap.ProductNumber, sb.AlternativeProductNumber,
       MAX(sb.physicalStockBalanse) as PhysicalStock
FROM ap.alternativeProducts LEFT JOIN 
     stockBalanse sb
     ON sb.Productnumber = ap.AlternativeProductNumber
GROUP BY ap.ProductNumber, sb.AlternativeProductNumber;

Нет причин выбирать оба номера продукта. JOIN гарантирует, что они имеют одинаковое значение, или второе - NULL.

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