590
社区成员
发帖
与我相关
我的任务
分享
SELECT XH ,
STUFF(( SELECT ',' + b.FeeName+RTRIM(b.Amount)
FROM A
WHERE XH = c.XH
FOR
XML PATH('')
), 1, 1, '') AS FeeName
FROM A c
GROUP BY a.XH
版主这种表名和别名都命同一个名的描述有点问题啊~
SELECT [XH], STRING_AGG(CONCAT([FeeName], [Amount]), ', ')
FROM a GROUP BY [XH]
USE tempdb
GO
IF OBJECT_ID('a') IS NOT NULL DROP TABLE a
go
CREATE TABLE [dbo].[A](
[ID] [int] IDENTITY(1,1) NOT NULL,
[XH] [nvarchar](50) NOT NULL,
[FeeName] [nvarchar](50) NULL,
[Amount] [int] NULL,
CONSTRAINT [PK_A] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
GO
SET IDENTITY_INSERT [dbo].[A] ON
GO
INSERT [dbo].[A] ([ID], [XH], [FeeName], [Amount]) VALUES (1, N'SH160901055
', N'运费', 1920)
GO
INSERT [dbo].[A] ([ID], [XH], [FeeName], [Amount]) VALUES (2, N'SH160901055
', N'送货费', 200)
GO
INSERT [dbo].[A] ([ID], [XH], [FeeName], [Amount]) VALUES (3, N'SH160901055
', N'其它费', 500)
GO
INSERT [dbo].[A] ([ID], [XH], [FeeName], [Amount]) VALUES (4, N'SH160901056
', N'运费', 1920)
GO
INSERT [dbo].[A] ([ID], [XH], [FeeName], [Amount]) VALUES (5, N'SH160901056
', N'送货费', 200)
GO
INSERT [dbo].[A] ([ID], [XH], [FeeName], [Amount]) VALUES (6, N'SH160901056
', N'其它费', 500)
SET IDENTITY_INSERT [dbo].[A] OFF
GO
#2 版主的有点小问题, 修正了一下:
--#2 版主的
SELECT XH ,
STUFF(( SELECT ',' + FeeName+RTRIM(Amount)
FROM A
WHERE XH = a.XH
FOR
XML PATH('')
), 1, 1, '') AS FeeName
FROM A a
GROUP BY a.XH
/*
XH FeeName
SH160901055 运费1920,送货费200,其它费500,运费1920,送货费200,其它费500
SH160901056 运费1920,送货费200,其它费500,运费1920,送货费200,其它费500
*/
--修正后的:
SELECT XH ,
STUFF(( SELECT ',' + b.FeeName+RTRIM(b.Amount)
FROM A AS b
WHERE b.XH = a.XH
FOR
XML PATH('')
), 1, 1, '') AS FeeName
FROM A a
GROUP BY a.XH
/*
XH FeeName
SH160901055 运费1920,送货费200,其它费500
SH160901056 运费1920,送货费200,其它费500
*/
SELECT XH ,
STUFF(( SELECT ',' + FeeName+RTRIM(Amount)
FROM A
WHERE XH = a.XH
FOR
XML PATH('')
), 1, 1, '') AS FeeName
FROM A a
GROUP BY a.XH