Обсуждение: SQL equiv to MS-Access Transform

Поиск
Список
Период
Сортировка

SQL equiv to MS-Access Transform

От
William Leeke
Дата:
ver: postgresql-6.2.1-7

OK, Ive been looking for solution for about 8 hours straight now and my
head hurts.

Is it possible to do this ...
TRANSFORM Statement Examples

SQL statement    Description
PARAMETERS [Sales for which year?] LONG;
TRANSFORM Sum([Order Details].Quantity * ([Order Details].
[Unit Price] - ([Order Details].Discount / 100) * [Order Details].
[Unit Price])) AS Sales
SELECT [Product Name]
FROM Orders INNER JOIN
(Products INNER JOIN [Order Details]
ON Products.[Product ID] = [Order Details].[Product ID]) ON
Orders.[Order ID] = [Order Details].[Order ID]
WHERE DatePart("yyyy", [Order Date]) = [Sales for which year?]
GROUP BY [Product Name]
ORDER BY [Product Name]
PIVOT DatePart("m", [Order Date]);

Creates a crosstab query that shows product sales by month for a
user-specified year.  The months are displayed from left to right
(pivoted) as columns, and the product names are displayed from top to
bottom as rows.

...with in postgres?

If this is a sore subject, I appologize ahead of time.
If this is referenced in a FAQ somewhere, please point the way.

Pivoting time data from rows to columns *seems to be a common if
non-intuitive thing to do with a database. :)

thanks,
wbl

--
"If you're not supposed to eat animals,
why are they made of meat?" :)

Re: [SQL] SQL equiv to MS-Access Transform

От
David Hartwig
Дата:

William Leeke wrote:

> ver: postgresql-6.2.1-7
>
> OK, Ive been looking for solution for about 8 hours straight now and my
> head hurts.
>
> Is it possible to do this ...
> TRANSFORM Statement Examples
>
> SQL statement   Description
> PARAMETERS [Sales for which year?] LONG;
> TRANSFORM Sum([Order Details].Quantity * ([Order Details].
> [Unit Price] - ([Order Details].Discount / 100) * [Order Details].
> [Unit Price])) AS Sales
> SELECT [Product Name]
> FROM Orders INNER JOIN
> (Products INNER JOIN [Order Details]
> ON Products.[Product ID] = [Order Details].[Product ID]) ON
> Orders.[Order ID] = [Order Details].[Order ID]
> WHERE DatePart("yyyy", [Order Date]) = [Sales for which year?]
> GROUP BY [Product Name]
> ORDER BY [Product Name]
> PIVOT DatePart("m", [Order Date]);
>
> Creates a crosstab query that shows product sales by month for a
> user-specified year.  The months are displayed from left to right
> (pivoted) as columns, and the product names are displayed from top to
> bottom as rows.
>
> ...with in postgres?
>
> If this is a sore subject, I appologize ahead of time.
> If this is referenced in a FAQ somewhere, please point the way.
>
> Pivoting time data from rows to columns *seems to be a common if
> non-intuitive thing to do with a database. :)
>

TRANSFORM/PIVOT are not available at this time in the server.   And, I am
not aware any plans to implement them in the near future.  (A plea could be
made)
This kind of query can be performed quite easily using ODBC tools via the
MS Jet Engine.   (MS Access, Excel, DOA controls etc.)  I will continue
with this discussion if  this interest you.