Tôi mới sử dụng PostgreSQL.Cách thực hiện xoay vòng trong PostgreSQL
Giả sử tôi có một bảng như dưới
colorname Hexa rgb rgbvalue
Violet #8B00FF r 139
Violet #8B00FF g 0
Violet #8B00FF b 255
Indigo #4B0082 r 75
Indigo #4B0082 g 0
Indigo #4B0082 b 130
Blue #0000FF r 0
Blue #0000FF g 0
Blue #0000FF b 255
Nếu tôi làm một Pivot trong SQL Server như
SELECT colorname,hexa,[r], [g], [b]
FROM
(SELECT colorname,hexa,rgb,rgbvalue
FROM tblPivot) AS TableToBePivoted
PIVOT
(
sum(rgbvalue)
FOR rgb IN ([r], [g], [b])
) AS PivotedTable;
tôi nhận được đầu ra như
colorname hexa r g b
Blue #0000FF 0 0 255
Indigo #4B0082 75 0 130
Violet #8B00FF 139 0 255
Làm thế nào để làm cùng sử dụng PostgreSQL?
nỗ lực của tôi là
SELECT *
FROM crosstab
(
'SELECT
colorname
,hexa
,rgb
,rgbvalue
FROM tblPivot'
)AS ct(colorname text, hexa text, rgb text, rgbvalue int);
Nhưng geting lỗi:
ERROR: function crosstab(unknown) does not exist
LINE 2: FROM crosstab
^
HINT: No function matches the given name and argument types. You might need to add explicit type casts.
********** Error **********
ERROR: function crosstab(unknown) does not exist**
Có cách nào tao nhã của làm như vậy trong PostgreSQL (bất kỳ xây dựng trong chức năng ...) thực hành tiêu chuẩn là gì làm như vậy ?
But why crosstab didnot work ... does it not support in phiên bản hiện tại mà tôi đang sử dụng? –
'crosstab()' thuộc về mô-đun 'tablefunc'. Bạn sẽ phải kích hoạt nó bằng 'CREATE EXTENSION'. Mà nói; sự tiện lợi mà nó cung cấp có thể không tuyệt vời như vậy; postgresql là tuyệt vời tốt tại tối ưu hóa tham gia, và loại mã này sẽ dễ nhận biết hơn trên cơ sở dữ liệu nhiều hơn và nhiều nhà phát triển hơn. – SingleNegationElimination
Nếu bạn làm rất nhiều công cụ crosstab, các mô-đun contf tablefunc có thể là tuyệt vời. Nếu bạn đang sử dụng Ubuntu, bạn có thể thêm các hàm tablefunc vào một db bằng cách làm như sau: psql dbname -f /usr/share/postgresql/8.4/contrib/tablefunc.sql hoặc một cái gì đó tương tự. –