我有一个看起来像这样的查询
SELECT J.JobID,T.Title FROM JobsTagMap J
Left Join Tags T
ON J.TagID=T.TagID
返回以下数据集(简化后,JobID实际上是一个UniqueIdentifier)
JobID Title
1 Tag1
1 Tag2
2 Tag2
2 Tag5
2 Tag9
现在,我想按JobID列将其分组并连接标题,因此结果如下
JobID Title
1 Tag1,Tag2
2 Tag2,Tag5,Tag9
我该怎么办?
如果您使用的是SQL Server 2005+。然后您可以这样做:
SELECT
JobsTagMap.JobID,
STUFF
(
(
SELECT
',' +Title
FROM
Tags
WHERE
Tags.TagID=JobsTagMap.TagID
FOR XML PATH('')
)
,1,1,'') AS Title
FROM JobsTagMap
编辑
因为您没有向我们显示不同表中的表结构和数据。很难知道。因此,我假设您的表结构如下所示:
CREATE TABLE JobsTagMap
(
JobID INT,
TagID INT
)
CREATE TABLE Tags
(
TagID INT,
Title VARCHAR(100)
)
有了这个数据:
INSERT INTO JobsTagMap
VALUES(1,1),(1,2),(2,2),(2,4),(2,5)
INSERT INTO Tags
VALUES(1,'Tag1'),(2,'Tag2'),(3,'Tag2'),(4,'Tag5'),(5,'Tag9')
如果获取该数据,则显示的数据JobID
不能唯一。您可能在某个Job
表的唯一位置有一个表。如果您只想使用显示的这些表,则需要执行以下操作:
;WITH CTE
AS
(
SELECT
ROW_NUMBER() OVER(PARTITION BY JobID ORDER BY JobID) AS RowNbr,
JobsTagMap.*
FROM
JobsTagMap
)
SELECT
*,
STUFF
(
(
SELECT
',' +Title
FROM
Tags
JOIN JobsTagMap
ON Tags.TagID=JobsTagMap.TagID
WHERE
JobsTagMap.JobID=CTE.JobID
FOR XML PATH('')
)
,1,1,'') AS Title
FROM
CTE
WHERE
CTE.RowNbr=1
这将为您提供以下结果:
1 1 1 Tag1,Tag2
1 2 2 Tag2,Tag5,Tag9
因此,将来总是显示什么 表结构 及其 数据 。那会给你更好的答案
问题内容: 我一直在尝试查找有关我的查询的问题。该查询实际上是由HQL的hibernate生成的,但是生成的SQL并没有达到我的期望。稍微修改SQL会产生正确的结果,但是我不确定为什么修改会有所不同。 原始查询(不返回任何行) 修改的查询-用逗号替换交叉联接(隐式交叉联接) 返回一行 我的理解可能是错误的,因为写作与Writing相同。所以我不明白为什么查询返回不同的结果。 与导致此问题的第一个查
我正在使用Keras,我有这个错误。我该如何解决它? 这是我的代码: 我得到了这个问题:
本文向大家介绍sqlServer实现去除字符串空格,包括了sqlServer实现去除字符串空格的使用技巧和注意事项,需要的朋友参考一下 说起去除字符串首尾空格大家肯定第一个想到trim()函数,不过在sqlserver中是没有这个函数的,却而代之的是ltrim()和rtrim()两个函数。看到名字所有人都 知道做什么用的了,ltrim()去除字符串左边的空格,rtrim()去除字符串右边的空格,
node-sqlserver 是微软官方发布的 SQL Server 的 Node.js 的驱动程序。可允许 Windows 上运行的 Node.js 程序访问 SQL Server 和 Windows Azure SQL 数据库。 该项目托管在 Github 上。
sqlserver manager 是一个多功能sqlserver图形管理界面,支持自定义导入导出,自动扫描服务器,数据库。
问题内容: 我需要知道是否可以连接字符串,如下所示?如果没有,那么还有什么选择呢? 它应该看起来像人等。 您不能在串联中使用符号,那么替代方法是什么? 问题答案: 仅用于连接。而您错过了增量!
问题内容: 我正在将Visual Studio 2017 for Mac与dotnet Core和EF Core一起使用。在Docker容器中设置mssql映像后,我试图添加连接字符串,但抛出连接错误。我尝试使用不同的选项(例如ip地址,容器名称,主机名等)作为服务器名称,但是它们都不起作用。 带有容器名称 主机名: 通过在终端中使用本地主机进行连接时,其成功连接 但是在运行应用程序时,连接失败。
本文向大家介绍通过+(字符串串联)运算符进行字符串串联。,包括了通过+(字符串串联)运算符进行字符串串联。的使用技巧和注意事项,需要的朋友参考一下 您可以使用Java的“ +”运算符来连接字符串。 示例 输出结果