Конкатенация строк из подзапроса - PullRequest
0 голосов
/ 28 октября 2019

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

Обратите внимание - я также прочитал это - но он выбирается из таблицы, а не из подзапроса.

Мой запрос выглядит так:

SELECT DISTINCT MERC_KEY, MEEV_QUA_SUM, MEEV_NTO
FROM
(
    SELECT MERC_KEY, SUM(MEEV_QUA) OVER(PARTITION BY MERC_KEY) MEEV_QUA_SUM, MEEV_NTO FROM @tbl1
) A

Желаемый вывод:

+----------+--------------+-----------------------------------+
| MERC_KEY | MEEV_QUA_SUM |             MEEV_NTO              |
+----------+--------------+-----------------------------------+
|        1 |           14 | FIRST TEST,SECOND TEST,THIRD TEST |
|        2 |            6 | ANOTHER, AND ANOTHER              |
+----------+--------------+-----------------------------------+

Весь пример:

declare @tbl1 table
(
    MERC_KEY INT,   
    MEEV_QUA INT,
    MEEV_NTO VARCHAR(100)
)

INSERT @tbl1 (MERC_KEY, MEEV_QUA, MEEV_NTO)
VALUES(1, 4, 'FIRST TEST'),
(1, 3, 'SECOND TEST'),
(1, 7, 'THIRD TEST'),
(2, 2, 'ANOTHER'),
(2, 4, 'AND ANOTHER')

Ответы [ 2 ]

2 голосов
/ 28 октября 2019

Если вы используете SQL Server 2017 или более позднюю версию, вы можете использовать STRING_AGG здесь:

SELECT
    MERC_KEY,
    SUM(MEEV_QUA) AS MEEV_QUA_SUM,
    STRING_AGG(MEEV_NTO, ',') MEEV_NTO
FROM @tbl1
GROUP BY
    MERC_KEY;
1 голос
/ 28 октября 2019

Вы можете использовать агрегатные функции для подзапроса, как и для таблиц. Но в этом случае вы можете использовать его для @ tbl1, запрос должен выглядеть следующим образом:

SELECT DISTINCT MERC_KEY, MEEV_QUA_SUM, MEEV_NTO
FROM
(
    SELECT MERC_KEY, SUM(MEEV_QUA) OVER(PARTITION BY MERC_KEY) MEEV_QUA_SUM, STRING_AGG(MEEV_NTO,',') AS MEEV_NTO FROM @tbl1 GROUP BY MERC_KEY
) A

Вы сказали, что ваш подзапрос намного сложнее, поэтому я сохраню вашу структуру запроса.

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