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
...)。