0

2 つのテーブルの 2 つの列を結合し、特定の順序で表示する必要があります

Table1 と ColumnNM
Table2 と ColumnDESC

主キーは ColumnID です

ColumnNM ごとに複数の ColumnDESC 行があります。したがって、次の形式で表示する必要があります。

列 ID 列 NM
-------------------
列DESC
列DESC
列DESC
列DESC

列 ID 列 NM
-------------------
列DESC
列DESC

列 ID 列 NM
-------------------
列DESC
列DESC
列DESC

結果をグリッドではなくテキストに表示する必要があります。これを行う方法に関する提案はありますか?ストアドプロシージャとして作成する必要があります。どんな助けでも大歓迎です。以下は私が得た限りです:

DECLARE @Name nvarchar(max),
@Lesson nvarchar(max),
@lb nvarchar(max)
SET @lb = '----------------------------------------------------'

SELECT  @Name = Module.Name
FROM Module
JOIN Lesson ON Module.ModuleSequence = Lesson.ModuleSequence
WHERE Module.ModuleSequence = 1
PRINT '1 ' +  @Name
PRINT @lb

SELECT Lesson.Description 
FROM Module
JOIN Lesson ON Module.ModuleSequence = Lesson.ModuleSequence
WHERE Module.ModuleSequence = 1

しかし、私は道を外れていると思います。

..........................................OK、編集、John Tabernik の提案の後私はこれを得た......................................

(PSスタックオーバーフローの使用方法を学んでいるだけで、回答にコメントを追加して申し訳ありません)

SELECT M.Name, L.Description
FROM Module M
    JOIN Lesson L
        ON M.ModuleSequence = L.ModuleSequence
ORDER BY M.Name, L.Description

最初の M.Name には 4 つの異なる L.Description があり、他のすべての M.Name には異なる量があるため、M.Name を 4 回繰り返すことになります。

例:

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   |
4

2 に答える 2

1

あなたが持っているように、セクションがヘッダーと「-------」行で区切られていることはどれほど重要ですか? 単純な SQL ではこれを行うことはできませんが、結果をすべてまとめて単純に並べ替えることができれば、非常に簡単です。

次のようなものが必要です。

SELECT column1, column2
FROM table1 T1
    JOIN table2 T2
          on T1.id = T2.foreignkey
ORDER BY column1, column2

このデータを引き出してフォーマットするものは何でも利用できますが、この一般的なアプローチでは、必要な方法で並べ替えられたデータが取得されます。幸運を!

于 2013-08-19T20:28:20.957 に答える