我有一个PostgreSQL函数(或表),它给出了以下输出:
Sl.no username Designation salary etc..
1 A XYZ 10000 ...
2 B RTS 50000 ...
3 C QWE 20000 ...
4 D HGD 34343 ...现在我想要的输出如下:
Sl.no 1 2 3 4 ...
Username A B C D ...
Designation XYZ RTS QWE HGD ...
Salary 10000 50000 20000 34343 ...该怎么做呢?
发布于 2012-12-30 02:34:54
SELECT
unnest(array['Sl.no', 'username', 'Designation','salary']) AS "Columns",
unnest(array[Sl.no, username, value3Count,salary]) AS "Values"
FROM view_name
ORDER BY "Columns"参考:
发布于 2016-03-17 02:57:06
如果(像我一样)您需要来自bash脚本的此信息,请注意,psql有一个简单的命令行开关来告诉它将表列输出为行:
psql mydbname -x -A -F= -c "SELECT * FROM foo WHERE id=123"-x选项是让psql将列输出为行的关键。
发布于 2019-02-06 01:21:05
我有一种比Erwin上面提到的更简单的方法,那就是Postgres (我认为它应该适用于所有支持SQL标准的主要关系数据库)。
您可以简单地使用UNION而不是交叉表:
SELECT text 'a' AS "text" UNION SELECT 'b';
text
------
a
b
(2 rows)当然,这取决于您要应用这一点的情况。考虑到您事先知道需要哪些字段,甚至在查询不同的表时也可以采用这种方法。即:
SELECT 'My first metric' as name, count(*) as total from first_table UNION
SELECT 'My second metric' as name, count(*) as total from second_table
name | Total
------------------|--------
My first metric | 10
My second metric | 20
(2 rows)这是一种更易维护的方法,IMHO。有关更多信息,请查看此页面:https://www.postgresql.org/docs/current/typeconv-union-case.html
https://stackoverflow.com/questions/14084503
复制相似问题