Bạn không thể GROUP BY activity, document, extraction
trong PIVOT
toán tử bảng, PIVOT
toán tử suy ra các cột được nhóm một cách tự động. Nhưng bạn có thể viết nó theo cách này:
WITH Pivoted
AS
(
SELECT *
FROM table1
PIVOT
(
sum([Count]) FOR [Type] IN ( Document ,
Extraction)
) AS p
)
SELECT
product,
SUM(Users) AS TotalUsers,
MAX(DAte) AS LatestDate,
MAX(Document) AS Document,
MAX(Extraction) AS Extraction
FROM Pivoted
GROUP BY Product;
Bản trình diễn SQL Fiddle
Điều này sẽ cung cấp cho bạn:
| PRODUCT | TOTALUSERS | LATESTDATE | DOCUMENT | EXTRACTION |
-------------------------------------------------------------------------------
| prodA | 60 | March, 02 2013 02:00:00+0000 | 113 | 152 |
| prodB | 45 | March, 02 2013 02:00:00+0000 | 40 | 73 |
Cập nhật 1
WITH a
AS(
SELECT
activity,
username,
[Last Accessed] = max(DATEADD(dd,
DATEDIFF(d, 0, ActDateTime),
0)),
--[#Users] = count(distinct username),
CASE
WHEN COUNT(activity) IS NOT NULL THEN 1
ELSE 0
END AS Count,
CASE
WHEN pageURL LIKE '/Document%'
OR pageURL LIKE '/Database%' THEN 'Document'
ELSE 'Extraction'
END AS [Type]
from activitylog
where pageURL not like '%home%'
AND pageURL not like '/Default%'
group by activity,
username,
...
), Pivoted
AS
(
SELECT *
FROM a
PIVOT
(
sum([Count]) FOR [Type] IN ( Document ,
Extraction)
) AS p
)
SELECT
product,
SUM(Users) AS TotalUsers,
MAX(DAte) AS LatestDate,
MAX(Document) AS Document,
MAX(Extraction) AS Extraction
FROM Pivoted
GROUP BY Product;