如何在一个完整的字符串中连接select语句中的所有值,以及如何为它们编号?例如
1. Name Date Price Duration Venue
2. Name Date Price Duration Venue
3. Name Date Price Duration Venue
SELECT Film.Title, Film.ParentControl, Program.Venue,
Program.Duration, Program.EndDate, Program.Seat
FROM Program
INNER JOIN Film
ON Program.FilmID = Film.FilmID
我正在做一个短信应用程序,我需要在他们要求的时候向用户发送所有电影的列表,每部电影应该在整个消息中逐一列出,我该怎么办呢?/ p>
答案 0 :(得分:1)
在标准SQL中,使用连接运算符构建字符串,并使用row_number()函数对行进行编号。 (但见下文......)
select row_number() over (order by Name, Date) as row_num,
Name || ' ' || Date || ' ' || Price || ' ' || Duration || ' ' || Venue
from your-table-name
order by Name, Date
对于SQL Server,我认为你必须用“+”替换标准连接运算符(“||”)或使用concat()函数。
select row_number() over (order by Name, Date) as row_num,
concat(Name, Date, Price, Duration, Venue)
from your-table-name
order by Name, Date
这种操作通常在应用程序代码中更好。通常,使用SQL返回数据,并使用应用程序代码或报表编写器格式化数据以供显示。
答案 1 :(得分:0)
尝试以下
declare @result table(title varchar(50), parentcontrol varchar(50), venue varchar(50)) insert into @result select 'title 1','parent control 1','venue 1' union all select 'title 2','parent control 2','venue 2' union all select 'title 3','parent control 3','venue 3' declare @result2 table(id int identity(1,1),title varchar(50), parentcontrol varchar(50), venue varchar(50)) insert into @result2 select * from @result declare @sql nvarchar(max) select @sql = '' select @sql = @sql + CAST(id as nvarchar(10)) + '. ' + title + ',' from @result2 print @sql
你应该能够以类似的方式工作。我将结果插入到具有标识列的变量表中,以获得行号。这是在此处拥有ID标识列的唯一目的,因为您需要行号。然后我只是使用正常的SQL连接。如果我理解正确,那就是你所追求的。