我认为这是一个愚蠢的问题,但我没有找到任何答案。 我有一个非常简单的选择查询,例如:
select [column_name], [table_name] from [sde].[SDE_column_registry]
where [table_name] like 'TESTFEATURECLASS' and [column_name] <> 'SHAPE'
答案是:
column_name table_name
----------- ------------
GDB_GEOMATTR_DATA TESTFEATURECLASS
myFieldText TESTFEATURECLASS
OBJECTID TESTFEATURECLASS
但是我只希望第一列连接成一行:
GDB_GEOMATTR_DATA,myFieldText,OBJECTID
我该如何做所有这些“简单”的事情?
答案 0 :(得分:2)
如果您使用的是SQL Server 2017+,则可以使用WebMvcConfigurerAdapter
:
@Configuration
public WebConfig implements WebMvcConfigurer {
// ...
}
这将输出:
STRING_AGG
答案 1 :(得分:1)
您可以将STUFF与XML PATH结合使用。 例如,如果我们将您的请求应用于AdventureWorks数据库,并且假设我们要显示名称中包含“ Person”的表的列,但“ BusinessEntityId”列除外,我们可以使用以下T-SQL代码段。
SELECT t1.name,
(
SELECT STUFF(C.name, 1, 0, '') + ' '
FROM sys.columns c
INNER JOIN sys.tables t ON c.object_id = t.object_id
WHERE t.object_id = t1.object_id AND c.name <> 'BusinessEntityId'
FOR XML PATH('')
) AS COLUMNLIST
FROM sys.tables t1
WHERE t1.name LIKE '%person%';
基本上,它与您的示例相同。您的示例更加简单。 在AdventureWorks数据库中,有五个这样的表,查询结果如下图所示。
以下链接Concatenating Row Values in Transact-SQL
上的“简单谈话”文章是探索的绝佳资源。该解决方案在SQL Server 2005+上运行良好。如果使用SQL Server 2017+,则首选Martin提供的解决方案(不是我的别名)。