Суммирование условно по вторичной колонке - PullRequest
0 голосов
/ 20 февраля 2020

Мне трудно найти информацию для условного суммирования столбца, а не для суммирования столбца, если условие не выполняется. В следующем запросе я пытаюсь суммировать элементы, у которых LineItemID совпадает с идентификатором с начальным нулем. Поэтому в приведенном ниже запросе я пытаюсь объединить LineItemID 3404 и 03404 в одну строку без суммирования другого выбранного идентификатора. Это двухколоночное решение, которое я адаптировал, но, похоже, даже не правильно стреляет действительно трудное время (суммирование четырех / пяти ди git IDS, которые либо имеют, либо пропускают ведущий ноль):

+----------------+------------------+----------------------------------+------------------------------------+----------------+
|   LineItemID   |        ID        |               Name               |               Alias                |    Quantity    |
+----------------+------------------+----------------------------------+------------------------------------+----------------+
| '894773001018' | '894773001018  ' | 'Natural Diet Cola             ' | 'ZEVIA-SODA DIET COLA 12OZ'        |         3.0000 |
| '894773001018' | '894773001018  ' | 'Natural Diet Cola             ' | 'ZEVIA-COLA SF 6PK'                |         1.0000 |
| '03404'        | '03404         ' | 'Lemon Thyme Whole Chicken     ' | 'DELI-CHCKN LEMON THYME WHLE NGMO' |        94.0000 |
+----------------+------------------+----------------------------------+------------------------------------+----------------+

Какой бы метод суммирования я ни испробовал, я либо заканчиваю суммированием элемента I не собираюсь суммировать ("894773001018") или не суммировать элемент, который я собираюсь суммировать ("03404").

Действительно изо всех сил здесь, чтобы найти решение. Я бы предпочел, чтобы не нужно было добавлять еще два столбца и просто суммировать условно, исходя из того, имеет ли элемент начальный ноль, но меня смущают на каждом ходу.

1 Ответ

0 голосов
/ 20 февраля 2020

Отредактировано Кажется, что ваш LineItemID и ID не имеют одинакового формата, но следуют одному и тому же шаблону.

Поля alphanumeri c, поэтому попробуйте обрезать пробелы и затем заменить 0 слева и снова обрежьте.

...


SELECT TRIM(substring(TRIM(TransactionJournalDetail."TLI_ScanCode"), patindex('%[^0]%',TRIM(TransactionJournalDetail."TLI_ScanCode")),14)) As LineItemID, 
    TRIM(substring(TRIM(StockInventory."INV_ScanCode"), patindex('%[^0]%',TRIM(StockInventory."INV_ScanCode")),14)) As ID, 
...

Примите во внимание, что если вы измените это, значения, которые вы должны будете ввести в предложении WHERE, будут

WHERE ((ID='3404')
OR (ID='894773001018'))
...