Добавление значений вместе на основе создания отформатированной строки - PullRequest
0 голосов
/ 26 сентября 2019

Я только учусь манипулировать строками в таблицах SQL и сейчас пытаюсь сочетать манипуляции со строками с вычислениями значений столбцов.Моя проблема состоит в том, что я ограничиваю серийный номер, обозначаемый как «xx-ггггггг», его первыми двумя значениями (без дефиса), а затем добавляю значения затрат вместе (которые относятся к этим серийным значениям) после создания этих новых серийных номеров.Однако, когда я добавляю значения стоимости вместе, я получаю неправильный результат из-за того, что последовательные значения не суммируются (дублирующиеся последовательные значения в моей выходной таблице).У меня вопрос: как мне ввести свой код, чтобы у меня не было повторяющихся последовательных значений в моих выходных данных, и все значения (кроме NULL) складывались вместе?

Пример таблицы, с которой я работаю, выглядит примерно так::

 ____Serial____|____Cost____
1| xx-yyyyyy   | $aaa.bb
2| xx-yyyyyy   | $aaa.bb
3|    ...      |    ...

Вот мой код, который я сейчас пробовал:

SELECT left(Serial, CHARINDEX('-', Serial)-1) AS NewSerial, sum(cost) AS TotalCost
FROM table
WHERE CHARINDEX('-', serial) > 0
GROUP BY Serial
ORDER BY TotalCost DESC

Результаты суммировали значения затрат, но оставляли дублирующиеся значения NewSerial (которые, я полагаю, из-зак предложению GROUP BY).

Output (From my code):
_|___NewSerial____|____TotalCost____
1|     ab         |    $abc.de
2|     cd         |    $abc.de
3|     ab         |    $abc.de
4|     ef         |    $abc.de
5|     cd         |    $abc.de

Как я могу исправить или решить эту проблему в этой области, чтобы все значения NewSerial складывались, а не оставались отдельными, как в моем выводе?

1 Ответ

0 голосов
/ 26 сентября 2019

Вам нужно повторить выражение в GROUP BY:

SELECT left(Serial, CHARINDEX('-', Serial)-1) AS NewSerial, sum(cost) AS TotalCost
FROM table
WHERE CHARINDEX('-', serial) > 0
GROUP BY left(Serial, CHARINDEX('-', Serial)-1)
ORDER BY TotalCost DESC
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...