実際には、非数値データで実行できるMAX()
またはMIN()
を指定するクロスタブを使用できます。ただし、列名が対応する値を繰り返すことがわかります。
SELECT t.ID, t.User, t.Date,
'Day' & Day(CDate(t.Date)) As DayCol
FROM TableData t;
-- ID User UDate DayCol
-- 1 Cat Sept 1 2016 Day1
-- 2 Cat Sept 2 2016 Day2
-- 3 Cat Sept 3 2016 Day3
-- 4 Bobcat Sept 1 2016 Day1
-- 5 Bobcat Sept 2 2016 Day2
-- 6 Bobcat Sept 3 2016 Day3
-- 7 Bobcat Sept 5 2016 Day5
-- 8 Bobcat Sept 6 2016 Day6
-- 9 Bobcat Sept 7 2016 Day7
TRANSFORM MAX(q.Date) AS MaxOfUDate
SELECT q.User
FROM TableDataQ q
GROUP BY q.User
PIVOT q.DayCol;
-- User Day1 Day2 Day3 Day5 Day6 Day7
-- Bobcat Sept 1 2016 Sept 2 2016 Sept 3 2016 Sept 5 2016 Sept 6 2016 Sept 7 2016
-- Cat Sept 1 2016 Sept 2 2016 Sept 3 2016
最後に、あなたはクロスタブがシーケンシャル日は含まれませんわかります:、個別の列名を取得しますが、その後、クロスタブを実行中に、間のクエリを使用して検討する
TRANSFORM MAX(t.Date) AS MaxOfUDate
SELECT t.User
FROM TableData t
GROUP BY t.User
PIVOT t.UDate;
-- User Sept 1 2016 Sept 2 2016 Sept 3 2016 Sept 5 2016 Sept 6 2016 Sept 7 2016
-- Bobcat Sept 1 2016 Sept 2 2016 Sept 3 2016 Sept 5 2016 Sept 6 2016 Sept 7 2016
-- Cat Sept 1 2016 Sept 2 2016 Sept 3 2016
(例えば、Day4)が含まれます。幸いなことに、あなたはPIVOT...IN()
句で列を指定することができます:それは神話ではないのですが、
TRANSFORM MAX(q.Date) AS MaxOfUDate
SELECT q.User
FROM TableDataQ q
GROUP BY q.User
PIVOT q.DayCol IN ('Day1', 'Day2', 'Day3', 'Day4', 'Day5',
'Day6', 'Day7', 'Day8', 'Day9', 'Day10',
'Day11', 'Day12', 'Day13', 'Day14', 'Day15',
'Day16', 'Day17', 'Day18', 'Day19', 'Day20',
'Day21', 'Day22', 'Day23', 'Day24', 'Day25',
'Day26', 'Day27', 'Day28', 'Day29', 'Day30', 'Day31');
-- User Day1 Day2 Day3 Day4 Day5 Day6 ...
-- Bobcat Sept 1 2016 Sept 2 2016 Sept 3 2016 Sept 5 2016 Sept 6 2016 ...
-- Cat Sept 1 2016 Sept 2 2016 Sept 3 2016
クイックフィックスコピー&ペースト移調やトランスポーズ機能とVBAでそれを作成することです。 – user3553260
私はこの方法を検討しましたが、これは月単位で生成する必要のある種類の「レポート」の一部であり、これを行うためには存在しないかもしれません。 – Macellaria
サンプルデータをさらに表示してください。複数のカテゴリがある場合はどうなりますか? – Andre