Sql 在一列中联接表并将结果显示为文本
我需要连接两个表中的两列,并按特定顺序显示它们 表1和表2 表2和柱状描述 主键是ColumnID 对于每个ColumnM,我有多行ColumnDESC。因此,我必须以以下格式显示: ColumnID ColumnNM ------------------- ColumnDESC ColumnDESC ColumnDESC ColumnDESC ColumnID ColumnNM ------------------- ColumnDESC ColumnDESC ColumnID ColumnNM ------------------- ColumnDESC ColumnDESC ColumnDESC 但我想我已经走远了 好的,编辑,在John Tabernik建议我得到这个 另外,很抱歉在您的回答中添加了一条评论,只是在学习如何使用stackoverflow 最后,我把M.的名字重复了四次,因为第一个M.的名字有四种不同的L.描述,其他M.的名字有不同的金额 例如:Sql 在一列中联接表并将结果显示为文本,sql,Sql,我需要连接两个表中的两列,并按特定顺序显示它们 表1和表2 表2和柱状描述 主键是ColumnID 对于每个ColumnM,我有多行ColumnDESC。因此,我必须以以下格式显示: ColumnID ColumnNM ------------------- ColumnDESC ColumnDESC ColumnDESC ColumnDESC ColumnID ColumnNM ------------------- ColumnDESC ColumnDESC ColumnID Colum
M.Name | L.Description
-----------------------------
A | 1
A | 2
A | 3
B | 1
B | 2
C | 1
C | 2
C | 3
但我需要它像这样输出:
A |
-----
1 |
2 |
3 |
B |
-----
1 |
2 |
C |
-----
1 |
2 |
SELECT column1, column2
FROM table1 T1
JOIN table2 T2
on T1.id = T2.foreignkey
ORDER BY column1, column2
用标题和----行分隔各部分有多重要?简单的SQL不能做到这一点,但如果结果可以全部放在一起并简单地排序,那就很容易了 你只想要这样的东西:
A |
-----
1 |
2 |
3 |
B |
-----
1 |
2 |
C |
-----
1 |
2 |
SELECT column1, column2
FROM table1 T1
JOIN table2 T2
on T1.id = T2.foreignkey
ORDER BY column1, column2
您可以利用任何提取数据的方法对其进行格式化,但这种通用方法将获得数据,并按您想要的方式进行排序。祝你好运 很抱歉回来晚了一点,但我已经解决了我需要的问题。我想我对这个问题的措辞有点不当。尽管如此,下面是我需要的代码。希望它能激励任何有类似问题的人:
CREATE PROCEDURE ShowModuleWithLessons
@CourseID int = 0
AS
BEGIN
SET NOCOUNT ON
DECLARE @MS INT
DECLARE @ModuleCount INT
SET @MS = 0
SET @ModuleCount = (Select COUNT(Module.ModuleSequence) FROM Module WHERE Module.CourseID = @CourseID)
IF EXISTS (SELECT * FROM Module WHERE Module.CourseID = @CourseID)
BEGIN
WHILE @MS < @ModuleCount
BEGIN
SET @MS=@MS+1
DECLARE @Name nvarchar(max),
@Lesson nvarchar(max),
@CID INT
SELECT @Name = Module.Name,
@CID = @MS
FROM Module
JOIN Lesson ON Module.ModuleSequence = Lesson.ModuleSequence
WHERE Module.ModuleSequence = @MS
PRINT CONVERT(VARCHAR(2),@MS) + '. ' + @Name
SELECT Lesson.Description AS Lessons
FROM Module
JOIN Lesson ON Module.ModuleSequence = Lesson.ModuleSequence
WHERE Module.ModuleSequence = @MS
END
END
ELSE
BEGIN
PRINT 'Course with ID ' + CONVERT(VARCHAR(2),@CourseID) + ' does not exists'
END
+1数据库存储和获取数据。应该在应用层对其进行良好的格式化。