Thank you, Simon and Owen. I have tried and both solutions work equally well. I have actually used C code to make the calculation as I pull out the data. But to help further my understanding of SQL/SQLite, can anyone comment on potential performance differences of the 2 SQL solutions.
CREATE VIEW IF NOT EXISTS [vw_patterns0] AS SELECT Patterns.Name AS Pattern, Patterns.Origin_X, Patterns.Origin_Y, Patterns.wMicrons, Patterns.hMicrons, COUNT(DISTINCT Offset_X) AS nTilesX, COUNT(DISTINCT Offset_Y) AS nTilesY, Patterns.wPixels, Patterns.hPixels, Patterns.wMicrons * COUNT(DISTINCT Offset_X) AS wTotalMicrons, Patterns.hMicrons * COUNT(DISTINCT Offset_Y) AS hTotalMicrons, Patterns.wPixels * COUNT(DISTINCT Offset_X) AS wTotalPixels, Patterns.hPixels * COUNT(DISTINCT Offset_Y) AS hTotalPixels, Patterns.Description FROM [Tiles] INNER JOIN Patterns ON Tiles.PatternID = Patterns.PatternID GROUP BY Tiles.PatternID; CREATE VIEW IF NOT EXISTS [vw_patterns1] AS SELECT Patterns.Name AS Pattern, Patterns.Origin_X, Patterns.Origin_Y, Patterns.wMicrons, Patterns.hMicrons, COUNT(DISTINCT Offset_X) AS nTilesX, COUNT(DISTINCT Offset_Y) AS nTilesY, Patterns.wPixels, Patterns.hPixels, Patterns.Description FROM [Tiles] INNER JOIN Patterns ON Tiles.PatternID = Patterns.PatternID GROUP BY Tiles.PatternID; CREATE VIEW IF NOT EXISTS [vw_patterns2] AS SELECT Pattern, Origin_X, Origin_Y, wMicrons, hMicrons, nTilesX, nTilesY, wMicrons * nTilesX AS wTotalMicrons, hMicrons * nTilesY AS hTotalMicrons, wPixels * nTilesX AS wTotalPixels, hPixels * nTilesY AS hTotalPixels, wPixels, hPixels, Description FROM [vw_patterns1]; _______________________________________________ sqlite-users mailing list sqlite-users@sqlite.org http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users