我不知道如何连接子查询中的字符串。请注意-我的内部查询要复杂得多。我省略了较长的WHERE条件以使事情变得更简单-我需要从外部查询中进行选择。 这是问题所在-我设法从MEEV_NTO之外的所有列中进行选择-我需要连接此查询中的字符串,并用逗号分隔。
请注意-我也读过this-但它是从表中选择的,而不是从子查询中选择的。
我的查询如下:
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')
答案 0 :(得分:2)
如果您使用的是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 :(得分:1)
您可以像表一样使用聚合函数进行子查询。但是在这种情况下,您可以将其用于@ 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
您告诉您,子查询要复杂得多,所以我保留了查询结构。