Access でこのクエリを作成する必要はありません。Word には<<Next Record>>、次のレコードに強制的に移動するという差し込みフィールドがあります。差し込み印刷ウィザードを使用してラベル ドキュメントがどのように作成されるかを見ると、それがどのように行われるかがわかります。
更新 - SQL でこれを行う
単純なSELECTステートメントの列は、基になるテーブル/クエリ (または式) の列から派生します。データに基づいて列を定義する場合は、クロス集計クエリを使用する必要があります。
最初に、各人の実行中のカウントを使用してクエリを作成し (テーブルが と呼ばれているとしますPeople)、実行中のカウントから行と列の位置を計算します。
SELECT People.id, Count(*)-1 AS RunningCount, int(RunningCount/4) AS RowNumber, RunningCount Mod 4 AS ColumnNumber
FROM People
LEFT JOIN People AS People_1 ON People.id >= People_1.id
GROUP BY People.id;
( は と比較しているのではなく、JOINと比較しているため、クエリ デザイナーでこれを表示することはできません。)=>=
このクエリは次の結果を返します。
id Rank RowNumber ColumnNumber
1 0 0 0
2 1 0 1
3 2 0 2
4 3 0 3
5 4 1 0
6 5 1 1
このクエリが として保存されていると仮定するとPositions、次のクエリは結果を返します。
TRANSFORM First(Item) AS FirstOfItem
SELECT RowNumber
FROM (
SELECT ID AS Item, RowNumber, "id" &( ColumnNumber + 1) AS ColumnHeading
FROM Positions
UNION ALL SELECT Name, RowNumber, "name" & (ColumnNumber +1)
FROM Positions
INNER JOIN People ON Positions.id = People.id
) AS AllValues
GROUP BY AllValues.RowNumber
PIVOT AllValues.ColumnHeading In ("id1","name1","id2","name2","id3","name3","id4","name4");
UNIONがあるので、Peopleテーブルの各レコードには 2 つの列があります。1 つはでid、もう 1 つはnameです。
このPIVOT句は、列をアルファベット順ではなく、指定された順序に強制します (例: id1、id2... name1、name2...)。