{"kind": "psql", "major": "18", "item": {"slug": "cmd-63-72-6f-73-73-74-61-62-76-69-65-77", "name": "\\crosstabview", "name_zh": "", "category": "Output and formatting", "summary": "Executes the current query buffer (like \\g ) and shows the results in a crosstab grid. The query must return at least three columns. The output column identified by colV becomes a vertical header and the output column identified by colH becomes a horizontal header. colD identifies the output column to display within the grid. sortcolH identifies an optional sort column for the horizontal header.", "aliases": ["\\crosstabview"], "content_hash": "79d67420a0714ca73d8f298e7671a6245b3192eb97015e0f92a1a2c17bc5fb6b", "versions": {"10": {"facts": [{"label": "Client", "value": "psql 10.23"}, {"label": "Case-sensitive spelling", "value": "\\crosstabview"}], "tables": [{"key": "spellings", "rows": [{"command": {"url": "/wiki/psql/cmd-63-72-6f-73-73-74-61-62-76-69-65-77/?v=10", "text": "\\crosstabview"}, "modifiers": "None listed in this signature"}], "title": "Spellings in this manual definition", "columns": [{"key": "command", "label": "Command"}, {"key": "modifiers", "label": "Documented suffix modifiers"}]}], "command": "\\crosstabview", "related": [{"url": "/wiki/tool/psql/?v=10", "label": "psql command-line options and complete manual"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v10.23/postgresql-10.23.tar.bz2", "label": "10.23", "major": "10", "channel": "historical", "manifest": {"pdf": {"A4": {"url": "/files/documentation/pdf/10/postgresql-10-A4.pdf", "bytes": 12631706, "pages": 2591, "sha256": "34497ab9efb45c5bdf1bd11b9016b5451354feb462fa029cf74557a5fa5fbbc1", "built_at": "2026-09-26"}, "US": {"url": "/files/documentation/pdf/10/postgresql-10-US.pdf", "bytes": 12531684, "pages": 2724, "sha256": "429cc7133ddf4f97c560aa466dc9caea4b718721a8321e293357037cf0af4733", "built_at": "2026-09-26"}}, "tree": "10", "index": "index.html", "major": "10", "pages": 1085, "release": "10.23", "source_url": "https://ftp.postgresql.org/pub/source/v10.23/postgresql-10.23.tar.bz2", "svg_assets": 0, "source_mode": "en HTML verified against the pinned official archive", "source_sha256": "94a4b2528372458e5662c18d406629266667c437198160a18cdfd2c4a4d6eee9"}, "revision": "f9301feba91e2e2566038a36b8cee0e4402db68989538f88670fddd20b1f78ea", "evidence_kind": "English manual and source declarations", "source_sha256": "94a4b2528372458e5662c18d406629266667c437198160a18cdfd2c4a4d6eee9"}, "sources": [{"url": "/docs/10/app-psql.html#APP-PSQL-META-COMMANDS-CROSSTABVIEW", "file": "app-psql.html", "label": "10.23 English manual \u00b7 app-psql.html", "anchor": "APP-PSQL-META-COMMANDS-CROSSTABVIEW", "sha256": "9e11fe3148cb8c085808f632ed972aa4514332a67758a083a080169101eeb7a4"}], "sections": [], "modifiers": [], "signature": "\\crosstabview [ colV [ colH [ colD [ sortcolH ] ] ] ]", "spellings": ["\\crosstabview"], "description": ["Executes the current query buffer (like \\g ) and shows the results in a crosstab grid. The query must return at least three columns. The output column identified by colV becomes a vertical header and the output column identified by colH becomes a horizontal header. colD identifies the output column to display within the grid. sortcolH identifies an optional sort column for the horizontal header."], "manual_html": "<div><dl class=\"variablelist\"><dt id=\"APP-PSQL-META-COMMANDS-CROSSTABVIEW\"><span class=\"term\"><code class=\"literal\">\\crosstabview [ <em class=\"replaceable\"><code>colV</code></em> [ <em class=\"replaceable\"><code>colH</code></em> [ <em class=\"replaceable\"><code>colD</code></em> [ <em class=\"replaceable\"><code>sortcolH</code></em> ] ] ] ]</code></span></dt><dd>\n<p>Executes the current query buffer (like <code class=\"literal\">\\g</code>) and shows the results in a crosstab grid. The query must return at least three columns. The output column identified by <em class=\"replaceable\"><code>colV</code></em> becomes a vertical header and the output column identified by <em class=\"replaceable\"><code>colH</code></em> becomes a horizontal header. <em class=\"replaceable\"><code>colD</code></em> identifies the output column to display within the grid. <em class=\"replaceable\"><code>sortcolH</code></em> identifies an optional sort column for the horizontal header.</p>\n<p>Each column specification can be a column number (starting at 1) or a column name. The usual SQL case folding and quoting rules apply to column names. If omitted, <em class=\"replaceable\"><code>colV</code></em> is taken as column 1 and <em class=\"replaceable\"><code>colH</code></em> as column 2. <em class=\"replaceable\"><code>colH</code></em> must differ from <em class=\"replaceable\"><code>colV</code></em>. If <em class=\"replaceable\"><code>colD</code></em> is not specified, then there must be exactly three columns in the query result, and the column that is neither <em class=\"replaceable\"><code>colV</code></em> nor <em class=\"replaceable\"><code>colH</code></em> is taken to be <em class=\"replaceable\"><code>colD</code></em>.</p>\n<p>The vertical header, displayed as the leftmost column, contains the values found in column <em class=\"replaceable\"><code>colV</code></em>, in the same order as in the query results, but with duplicates removed.</p>\n<p>The horizontal header, displayed as the first row, contains the values found in column <em class=\"replaceable\"><code>colH</code></em>, with duplicates removed. By default, these appear in the same order as in the query results. But if the optional <em class=\"replaceable\"><code>sortcolH</code></em> argument is given, it identifies a column whose values must be integer numbers, and the values from <em class=\"replaceable\"><code>colH</code></em> will appear in the horizontal header sorted according to the corresponding <em class=\"replaceable\"><code>sortcolH</code></em> values.</p>\n<p>Inside the crosstab grid, for each distinct value <code class=\"literal\">x</code> of <em class=\"replaceable\"><code>colH</code></em> and each distinct value <code class=\"literal\">y</code> of <em class=\"replaceable\"><code>colV</code></em>, the cell located at the intersection <code class=\"literal\">(x,y)</code> contains the value of the <code class=\"literal\">colD</code> column in the query result row for which the value of <em class=\"replaceable\"><code>colH</code></em> is <code class=\"literal\">x</code> and the value of <em class=\"replaceable\"><code>colV</code></em> is <code class=\"literal\">y</code>. If there is no such row, the cell is empty. If there are multiple such rows, an error is reported.</p>\n</dd></dl></div>", "manual_path": "app-psql.html#APP-PSQL-META-COMMANDS-CROSSTABVIEW", "comparison_data": {"modifiers": [], "signature": "\\crosstabview [ colV [ colH [ colD [ sortcolH ] ] ] ]", "spellings": ["\\crosstabview"], "definition": "Executes the current query buffer (like \\g ) and shows the results in a crosstab grid. The query must return at least three columns. The output column identified by colV becomes a vertical header and the output column identified by colH becomes a horizontal header. colD identifies the output column to display within the grid. sortcolH identifies an optional sort column for the horizontal header. Each column specification can be a column number (starting at 1) or a column name. The usual SQL case folding and quoting rules apply to column names. If omitted, colV is taken as column 1 and colH as column 2. colH must differ from colV . If colD is not specified, then there must be exactly three columns in the query result, and the column that is neither colV nor colH is taken to be colD . The vertical header, displayed as the leftmost column, contains the values found in column colV , in the same order as in the query results, but with duplicates removed. The horizontal header, displayed as the first row, contains the values found in column colH , with duplicates removed. By default, these appear in the same order as in the query results. But if the optional sortcolH argument is given, it identifies a column whose values must be integer numbers, and the values from colH will appear in the horizontal header sorted according to the corresponding sortcolH values. Inside the crosstab grid, for each distinct value x of colH and each distinct value y of colV , the cell located at the intersection (x,y) contains the value of the colD column in the query result row for which the value of colH is x and the value of colV is y . If there is no such row, the cell is empty. If there are multiple such rows, an error is reported."}, "comparison_hash": "abf12a81cd555025f4fc46d4903e789a1cd12690887288a72af1c4eec8aefa6b"}, "11": {"facts": [{"label": "Client", "value": "psql 11.22"}, {"label": "Case-sensitive spelling", "value": "\\crosstabview"}], "tables": [{"key": "spellings", "rows": [{"command": {"url": "/wiki/psql/cmd-63-72-6f-73-73-74-61-62-76-69-65-77/?v=11", "text": "\\crosstabview"}, "modifiers": "None listed in this signature"}], "title": "Spellings in this manual definition", "columns": [{"key": "command", "label": "Command"}, {"key": "modifiers", "label": "Documented suffix modifiers"}]}], "command": "\\crosstabview", "related": [{"url": "/wiki/tool/psql/?v=11", "label": "psql command-line options and complete manual"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v11.22/postgresql-11.22.tar.bz2", "label": "11.22", "major": "11", "channel": "historical", "manifest": {"pdf": {"A4": {"url": "/files/documentation/pdf/11/postgresql-11-A4.pdf", "bytes": 13057499, "pages": 2732, "sha256": "41d75855e610d0d9b8802b87dc5b080bef8d7e91c7cf69401fbf8d3cf801b4b5", "built_at": "2026-09-26"}, "US": {"url": "/files/documentation/pdf/11/postgresql-11-US.pdf", "bytes": 12961189, "pages": 2883, "sha256": "6a8899ef36935a5b7ed2b436207564a567a4ef1eb1c2200195876b8de4d4fa30", "built_at": "2026-09-26"}}, "tree": "11", "index": "index.html", "major": "11", "pages": 1125, "release": "11.22", "source_url": "https://ftp.postgresql.org/pub/source/v11.22/postgresql-11.22.tar.bz2", "svg_assets": 0, "source_mode": "en HTML verified against the pinned official archive", "source_sha256": "2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0"}, "revision": "53315ddaf3b3f9e6669fd1edc096bbb2cd4a65ea3e836c89e542b43af9ba3a7f", "evidence_kind": "English manual and source declarations", "source_sha256": "2cb7c97d7a0d7278851bbc9c61f467b69c094c72b81740b751108e7892ebe1f0"}, "sources": [{"url": "/docs/11/app-psql.html#APP-PSQL-META-COMMANDS-CROSSTABVIEW", "file": "app-psql.html", "label": "11.22 English manual \u00b7 app-psql.html", "anchor": "APP-PSQL-META-COMMANDS-CROSSTABVIEW", "sha256": "32c4d489e91e59715de2f7c3264fcccab3dd1eca54673dbfeac61304b0c54d4d"}], "sections": [], "modifiers": [], "signature": "\\crosstabview [ colV [ colH [ colD [ sortcolH ] ] ] ]", "spellings": ["\\crosstabview"], "description": ["Executes the current query buffer (like \\g ) and shows the results in a crosstab grid. The query must return at least three columns. The output column identified by colV becomes a vertical header and the output column identified by colH becomes a horizontal header. colD identifies the output column to display within the grid. sortcolH identifies an optional sort column for the horizontal header."], "manual_html": "<div><dl class=\"variablelist\"><dt id=\"APP-PSQL-META-COMMANDS-CROSSTABVIEW\"><span class=\"term\"><code class=\"literal\">\\crosstabview [ <em class=\"replaceable\"><code>colV</code></em> [ <em class=\"replaceable\"><code>colH</code></em> [ <em class=\"replaceable\"><code>colD</code></em> [ <em class=\"replaceable\"><code>sortcolH</code></em> ] ] ] ]</code></span></dt><dd>\n<p>Executes the current query buffer (like <code class=\"literal\">\\g</code>) and shows the results in a crosstab grid. The query must return at least three columns. The output column identified by <em class=\"replaceable\"><code>colV</code></em> becomes a vertical header and the output column identified by <em class=\"replaceable\"><code>colH</code></em> becomes a horizontal header. <em class=\"replaceable\"><code>colD</code></em> identifies the output column to display within the grid. <em class=\"replaceable\"><code>sortcolH</code></em> identifies an optional sort column for the horizontal header.</p>\n<p>Each column specification can be a column number (starting at 1) or a column name. The usual SQL case folding and quoting rules apply to column names. If omitted, <em class=\"replaceable\"><code>colV</code></em> is taken as column 1 and <em class=\"replaceable\"><code>colH</code></em> as column 2. <em class=\"replaceable\"><code>colH</code></em> must differ from <em class=\"replaceable\"><code>colV</code></em>. If <em class=\"replaceable\"><code>colD</code></em> is not specified, then there must be exactly three columns in the query result, and the column that is neither <em class=\"replaceable\"><code>colV</code></em> nor <em class=\"replaceable\"><code>colH</code></em> is taken to be <em class=\"replaceable\"><code>colD</code></em>.</p>\n<p>The vertical header, displayed as the leftmost column, contains the values found in column <em class=\"replaceable\"><code>colV</code></em>, in the same order as in the query results, but with duplicates removed.</p>\n<p>The horizontal header, displayed as the first row, contains the values found in column <em class=\"replaceable\"><code>colH</code></em>, with duplicates removed. By default, these appear in the same order as in the query results. But if the optional <em class=\"replaceable\"><code>sortcolH</code></em> argument is given, it identifies a column whose values must be integer numbers, and the values from <em class=\"replaceable\"><code>colH</code></em> will appear in the horizontal header sorted according to the corresponding <em class=\"replaceable\"><code>sortcolH</code></em> values.</p>\n<p>Inside the crosstab grid, for each distinct value <code class=\"literal\">x</code> of <em class=\"replaceable\"><code>colH</code></em> and each distinct value <code class=\"literal\">y</code> of <em class=\"replaceable\"><code>colV</code></em>, the cell located at the intersection <code class=\"literal\">(x,y)</code> contains the value of the <code class=\"literal\">colD</code> column in the query result row for which the value of <em class=\"replaceable\"><code>colH</code></em> is <code class=\"literal\">x</code> and the value of <em class=\"replaceable\"><code>colV</code></em> is <code class=\"literal\">y</code>. If there is no such row, the cell is empty. If there are multiple such rows, an error is reported.</p>\n</dd></dl></div>", "manual_path": "app-psql.html#APP-PSQL-META-COMMANDS-CROSSTABVIEW", "comparison_data": {"modifiers": [], "signature": "\\crosstabview [ colV [ colH [ colD [ sortcolH ] ] ] ]", "spellings": ["\\crosstabview"], "definition": "Executes the current query buffer (like \\g ) and shows the results in a crosstab grid. The query must return at least three columns. The output column identified by colV becomes a vertical header and the output column identified by colH becomes a horizontal header. colD identifies the output column to display within the grid. sortcolH identifies an optional sort column for the horizontal header. Each column specification can be a column number (starting at 1) or a column name. The usual SQL case folding and quoting rules apply to column names. If omitted, colV is taken as column 1 and colH as column 2. colH must differ from colV . If colD is not specified, then there must be exactly three columns in the query result, and the column that is neither colV nor colH is taken to be colD . The vertical header, displayed as the leftmost column, contains the values found in column colV , in the same order as in the query results, but with duplicates removed. The horizontal header, displayed as the first row, contains the values found in column colH , with duplicates removed. By default, these appear in the same order as in the query results. But if the optional sortcolH argument is given, it identifies a column whose values must be integer numbers, and the values from colH will appear in the horizontal header sorted according to the corresponding sortcolH values. Inside the crosstab grid, for each distinct value x of colH and each distinct value y of colV , the cell located at the intersection (x,y) contains the value of the colD column in the query result row for which the value of colH is x and the value of colV is y . If there is no such row, the cell is empty. If there are multiple such rows, an error is reported."}, "comparison_hash": "abf12a81cd555025f4fc46d4903e789a1cd12690887288a72af1c4eec8aefa6b"}, "12": {"facts": [{"label": "Client", "value": "psql 12.22"}, {"label": "Case-sensitive spelling", "value": "\\crosstabview"}], "tables": [{"key": "spellings", "rows": [{"command": {"url": "/wiki/psql/cmd-63-72-6f-73-73-74-61-62-76-69-65-77/?v=12", "text": "\\crosstabview"}, "modifiers": "None listed in this signature"}], "title": "Spellings in this manual definition", "columns": [{"key": "command", "label": "Command"}, {"key": "modifiers", "label": "Documented suffix modifiers"}]}], "command": "\\crosstabview", "related": [{"url": "/wiki/tool/psql/?v=12", "label": "psql command-line options and complete manual"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v12.22/postgresql-12.22.tar.bz2", "label": "12.22", "major": "12", "channel": "historical", "manifest": {"pdf": {"A4": {"url": "/files/documentation/pdf/12/postgresql-12-A4.pdf", "bytes": 13424351, "pages": 2803, "sha256": "7422cf53fd1939e7a3d2925231a88b0330e468afa5393627cac0ff86158a0621", "built_at": "2026-09-26"}, "US": {"url": "/files/documentation/pdf/12/postgresql-12-US.pdf", "bytes": 13322565, "pages": 2958, "sha256": "51f3b04e72907fc38512685946223452ea65f84419c60c66241dfa3396035e77", "built_at": "2026-09-26"}}, "tree": "12", "index": "index.html", "major": "12", "pages": 1131, "release": "12.22", "source_url": "https://ftp.postgresql.org/pub/source/v12.22/postgresql-12.22.tar.bz2", "svg_assets": 2, "source_mode": "en HTML verified against the pinned official archive", "source_sha256": "8df3c0474782589d3c6f374b5133b1bd14d168086edbc13c6e72e67dd4527a3b"}, "revision": "7a827e97cbfacd7febff75f34443e2043e40723de5b6d8c9d81a9430b65a37e4", "evidence_kind": "English manual and source declarations", "source_sha256": "8df3c0474782589d3c6f374b5133b1bd14d168086edbc13c6e72e67dd4527a3b"}, "sources": [{"url": "/docs/12/app-psql.html#APP-PSQL-META-COMMANDS-CROSSTABVIEW", "file": "app-psql.html", "label": "12.22 English manual \u00b7 app-psql.html", "anchor": "APP-PSQL-META-COMMANDS-CROSSTABVIEW", "sha256": "a5cec5a456a98610e98d1f1959d96ce57c8413bb392f0f5d6720fc561bb63627"}], "sections": [], "modifiers": [], "signature": "\\crosstabview [ colV [ colH [ colD [ sortcolH ] ] ] ]", "spellings": ["\\crosstabview"], "description": ["Executes the current query buffer (like \\g ) and shows the results in a crosstab grid. The query must return at least three columns. The output column identified by colV becomes a vertical header and the output column identified by colH becomes a horizontal header. colD identifies the output column to display within the grid. sortcolH identifies an optional sort column for the horizontal header."], "manual_html": "<div><dl class=\"variablelist\"><dt id=\"APP-PSQL-META-COMMANDS-CROSSTABVIEW\"><span class=\"term\"><code class=\"literal\">\\crosstabview [ <em class=\"replaceable\"><code>colV</code></em> [ <em class=\"replaceable\"><code>colH</code></em> [ <em class=\"replaceable\"><code>colD</code></em> [ <em class=\"replaceable\"><code>sortcolH</code></em> ] ] ] ]</code></span></dt><dd>\n<p>Executes the current query buffer (like <code class=\"literal\">\\g</code>) and shows the results in a crosstab grid. The query must return at least three columns. The output column identified by <em class=\"replaceable\"><code>colV</code></em> becomes a vertical header and the output column identified by <em class=\"replaceable\"><code>colH</code></em> becomes a horizontal header. <em class=\"replaceable\"><code>colD</code></em> identifies the output column to display within the grid. <em class=\"replaceable\"><code>sortcolH</code></em> identifies an optional sort column for the horizontal header.</p>\n<p>Each column specification can be a column number (starting at 1) or a column name. The usual SQL case folding and quoting rules apply to column names. If omitted, <em class=\"replaceable\"><code>colV</code></em> is taken as column 1 and <em class=\"replaceable\"><code>colH</code></em> as column 2. <em class=\"replaceable\"><code>colH</code></em> must differ from <em class=\"replaceable\"><code>colV</code></em>. If <em class=\"replaceable\"><code>colD</code></em> is not specified, then there must be exactly three columns in the query result, and the column that is neither <em class=\"replaceable\"><code>colV</code></em> nor <em class=\"replaceable\"><code>colH</code></em> is taken to be <em class=\"replaceable\"><code>colD</code></em>.</p>\n<p>The vertical header, displayed as the leftmost column, contains the values found in column <em class=\"replaceable\"><code>colV</code></em>, in the same order as in the query results, but with duplicates removed.</p>\n<p>The horizontal header, displayed as the first row, contains the values found in column <em class=\"replaceable\"><code>colH</code></em>, with duplicates removed. By default, these appear in the same order as in the query results. But if the optional <em class=\"replaceable\"><code>sortcolH</code></em> argument is given, it identifies a column whose values must be integer numbers, and the values from <em class=\"replaceable\"><code>colH</code></em> will appear in the horizontal header sorted according to the corresponding <em class=\"replaceable\"><code>sortcolH</code></em> values.</p>\n<p>Inside the crosstab grid, for each distinct value <code class=\"literal\">x</code> of <em class=\"replaceable\"><code>colH</code></em> and each distinct value <code class=\"literal\">y</code> of <em class=\"replaceable\"><code>colV</code></em>, the cell located at the intersection <code class=\"literal\">(x,y)</code> contains the value of the <code class=\"literal\">colD</code> column in the query result row for which the value of <em class=\"replaceable\"><code>colH</code></em> is <code class=\"literal\">x</code> and the value of <em class=\"replaceable\"><code>colV</code></em> is <code class=\"literal\">y</code>. If there is no such row, the cell is empty. If there are multiple such rows, an error is reported.</p>\n</dd></dl></div>", "manual_path": "app-psql.html#APP-PSQL-META-COMMANDS-CROSSTABVIEW", "comparison_data": {"modifiers": [], "signature": "\\crosstabview [ colV [ colH [ colD [ sortcolH ] ] ] ]", "spellings": ["\\crosstabview"], "definition": "Executes the current query buffer (like \\g ) and shows the results in a crosstab grid. The query must return at least three columns. The output column identified by colV becomes a vertical header and the output column identified by colH becomes a horizontal header. colD identifies the output column to display within the grid. sortcolH identifies an optional sort column for the horizontal header. Each column specification can be a column number (starting at 1) or a column name. The usual SQL case folding and quoting rules apply to column names. If omitted, colV is taken as column 1 and colH as column 2. colH must differ from colV . If colD is not specified, then there must be exactly three columns in the query result, and the column that is neither colV nor colH is taken to be colD . The vertical header, displayed as the leftmost column, contains the values found in column colV , in the same order as in the query results, but with duplicates removed. The horizontal header, displayed as the first row, contains the values found in column colH , with duplicates removed. By default, these appear in the same order as in the query results. But if the optional sortcolH argument is given, it identifies a column whose values must be integer numbers, and the values from colH will appear in the horizontal header sorted according to the corresponding sortcolH values. Inside the crosstab grid, for each distinct value x of colH and each distinct value y of colV , the cell located at the intersection (x,y) contains the value of the colD column in the query result row for which the value of colH is x and the value of colV is y . If there is no such row, the cell is empty. If there are multiple such rows, an error is reported."}, "comparison_hash": "abf12a81cd555025f4fc46d4903e789a1cd12690887288a72af1c4eec8aefa6b"}, "13": {"facts": [{"label": "Client", "value": "psql 13.23"}, {"label": "Case-sensitive spelling", "value": "\\crosstabview"}], "tables": [{"key": "spellings", "rows": [{"command": {"url": "/wiki/psql/cmd-63-72-6f-73-73-74-61-62-76-69-65-77/?v=13", "text": "\\crosstabview"}, "modifiers": "None listed in this signature"}], "title": "Spellings in this manual definition", "columns": [{"key": "command", "label": "Command"}, {"key": "modifiers", "label": "Documented suffix modifiers"}]}], "command": "\\crosstabview", "related": [{"url": "/wiki/tool/psql/?v=13", "label": "psql command-line options and complete manual"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v13.23/postgresql-13.23.tar.bz2", "label": "13.23", "major": "13", "channel": "historical", "manifest": {"pdf": {"A4": {"url": "/files/documentation/pdf/13/postgresql-13-A4.pdf", "bytes": 13843239, "pages": 2826, "sha256": "171cc09f90936dbc1cbd503a98ff07ae72ea58ab9771ff051313f1217737799c", "built_at": "2026-09-26"}, "US": {"url": "/files/documentation/pdf/13/postgresql-13-US.pdf", "bytes": 13739572, "pages": 2984, "sha256": "48d09c6e197d9db4220f41afe83efe848a8661b1b168d3b89419751ecaf6c24d", "built_at": "2026-09-26"}}, "tree": "13", "index": "index.html", "major": "13", "pages": 1139, "release": "13.23", "source_url": "https://ftp.postgresql.org/pub/source/v13.23/postgresql-13.23.tar.bz2", "svg_assets": 3, "source_mode": "en HTML verified against the pinned official archive", "source_sha256": "6ec3c82726af92b7dec873fa1cdf881eca92a4219787dfad05acb6b10e041fd6"}, "revision": "614ee3133270254e476c118cdf6f72af78d4e4b8bbd9b28ed9ab1e14e4e9c0f6", "evidence_kind": "English manual and source declarations", "source_sha256": "6ec3c82726af92b7dec873fa1cdf881eca92a4219787dfad05acb6b10e041fd6"}, "sources": [{"url": "/docs/13/app-psql.html#APP-PSQL-META-COMMANDS-CROSSTABVIEW", "file": "app-psql.html", "label": "13.23 English manual \u00b7 app-psql.html", "anchor": "APP-PSQL-META-COMMANDS-CROSSTABVIEW", "sha256": "30347083b7a58da020d968643e2479d2dfb534191d4493d454603ca53db151b0"}], "sections": [], "modifiers": [], "signature": "\\crosstabview [ colV [ colH [ colD [ sortcolH ] ] ] ]", "spellings": ["\\crosstabview"], "description": ["Executes the current query buffer (like \\g ) and shows the results in a crosstab grid. The query must return at least three columns. The output column identified by colV becomes a vertical header and the output column identified by colH becomes a horizontal header. colD identifies the output column to display within the grid. sortcolH identifies an optional sort column for the horizontal header."], "manual_html": "<div><dl class=\"variablelist\"><dt id=\"APP-PSQL-META-COMMANDS-CROSSTABVIEW\"><span class=\"term\"><code class=\"literal\">\\crosstabview [ <em class=\"replaceable\"><code>colV</code></em> [ <em class=\"replaceable\"><code>colH</code></em> [ <em class=\"replaceable\"><code>colD</code></em> [ <em class=\"replaceable\"><code>sortcolH</code></em> ] ] ] ]</code></span></dt><dd>\n<p>Executes the current query buffer (like <code class=\"literal\">\\g</code>) and shows the results in a crosstab grid. The query must return at least three columns. The output column identified by <em class=\"replaceable\"><code>colV</code></em> becomes a vertical header and the output column identified by <em class=\"replaceable\"><code>colH</code></em> becomes a horizontal header. <em class=\"replaceable\"><code>colD</code></em> identifies the output column to display within the grid. <em class=\"replaceable\"><code>sortcolH</code></em> identifies an optional sort column for the horizontal header.</p>\n<p>Each column specification can be a column number (starting at 1) or a column name. The usual SQL case folding and quoting rules apply to column names. If omitted, <em class=\"replaceable\"><code>colV</code></em> is taken as column 1 and <em class=\"replaceable\"><code>colH</code></em> as column 2. <em class=\"replaceable\"><code>colH</code></em> must differ from <em class=\"replaceable\"><code>colV</code></em>. If <em class=\"replaceable\"><code>colD</code></em> is not specified, then there must be exactly three columns in the query result, and the column that is neither <em class=\"replaceable\"><code>colV</code></em> nor <em class=\"replaceable\"><code>colH</code></em> is taken to be <em class=\"replaceable\"><code>colD</code></em>.</p>\n<p>The vertical header, displayed as the leftmost column, contains the values found in column <em class=\"replaceable\"><code>colV</code></em>, in the same order as in the query results, but with duplicates removed.</p>\n<p>The horizontal header, displayed as the first row, contains the values found in column <em class=\"replaceable\"><code>colH</code></em>, with duplicates removed. By default, these appear in the same order as in the query results. But if the optional <em class=\"replaceable\"><code>sortcolH</code></em> argument is given, it identifies a column whose values must be integer numbers, and the values from <em class=\"replaceable\"><code>colH</code></em> will appear in the horizontal header sorted according to the corresponding <em class=\"replaceable\"><code>sortcolH</code></em> values.</p>\n<p>Inside the crosstab grid, for each distinct value <code class=\"literal\">x</code> of <em class=\"replaceable\"><code>colH</code></em> and each distinct value <code class=\"literal\">y</code> of <em class=\"replaceable\"><code>colV</code></em>, the cell located at the intersection <code class=\"literal\">(x,y)</code> contains the value of the <code class=\"literal\">colD</code> column in the query result row for which the value of <em class=\"replaceable\"><code>colH</code></em> is <code class=\"literal\">x</code> and the value of <em class=\"replaceable\"><code>colV</code></em> is <code class=\"literal\">y</code>. If there is no such row, the cell is empty. If there are multiple such rows, an error is reported.</p>\n</dd></dl></div>", "manual_path": "app-psql.html#APP-PSQL-META-COMMANDS-CROSSTABVIEW", "comparison_data": {"modifiers": [], "signature": "\\crosstabview [ colV [ colH [ colD [ sortcolH ] ] ] ]", "spellings": ["\\crosstabview"], "definition": "Executes the current query buffer (like \\g ) and shows the results in a crosstab grid. The query must return at least three columns. The output column identified by colV becomes a vertical header and the output column identified by colH becomes a horizontal header. colD identifies the output column to display within the grid. sortcolH identifies an optional sort column for the horizontal header. Each column specification can be a column number (starting at 1) or a column name. The usual SQL case folding and quoting rules apply to column names. If omitted, colV is taken as column 1 and colH as column 2. colH must differ from colV . If colD is not specified, then there must be exactly three columns in the query result, and the column that is neither colV nor colH is taken to be colD . The vertical header, displayed as the leftmost column, contains the values found in column colV , in the same order as in the query results, but with duplicates removed. The horizontal header, displayed as the first row, contains the values found in column colH , with duplicates removed. By default, these appear in the same order as in the query results. But if the optional sortcolH argument is given, it identifies a column whose values must be integer numbers, and the values from colH will appear in the horizontal header sorted according to the corresponding sortcolH values. Inside the crosstab grid, for each distinct value x of colH and each distinct value y of colV , the cell located at the intersection (x,y) contains the value of the colD column in the query result row for which the value of colH is x and the value of colV is y . If there is no such row, the cell is empty. If there are multiple such rows, an error is reported."}, "comparison_hash": "abf12a81cd555025f4fc46d4903e789a1cd12690887288a72af1c4eec8aefa6b"}, "14": {"facts": [{"label": "Client", "value": "psql 14.24"}, {"label": "Case-sensitive spelling", "value": "\\crosstabview"}], "tables": [{"key": "spellings", "rows": [{"command": {"url": "/wiki/psql/cmd-63-72-6f-73-73-74-61-62-76-69-65-77/?v=14", "text": "\\crosstabview"}, "modifiers": "None listed in this signature"}], "title": "Spellings in this manual definition", "columns": [{"key": "command", "label": "Command"}, {"key": "modifiers", "label": "Documented suffix modifiers"}]}], "command": "\\crosstabview", "related": [{"url": "/wiki/tool/psql/?v=14", "label": "psql command-line options and complete manual"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v14.24/postgresql-14.24.tar.bz2", "label": "14.24", "major": "14", "channel": "stable", "manifest": {"pdf": {"A4": {"url": "/files/documentation/pdf/14/postgresql-14-A4.pdf", "bytes": 14354704, "pages": 2944, "sha256": "8bc6b9dd7b246888bb77f0a5e8c39a2eae52e9926569832669c7d1600becb27c", "built_at": "2026-09-26"}, "US": {"url": "/files/documentation/pdf/14/postgresql-14-US.pdf", "bytes": 14242178, "pages": 3102, "sha256": "b7ecb5a5f62d8b9f73a69e25a7d26ba285373bc53168a553bff7b77955506db4", "built_at": "2026-09-26"}}, "tree": "14", "index": "index.html", "major": "14", "pages": 1158, "release": "14.24", "source_url": "https://ftp.postgresql.org/pub/source/v14.24/postgresql-14.24.tar.bz2", "svg_assets": 3, "source_mode": "en HTML verified against the pinned official archive", "source_sha256": "a7fa7ed3d558172355f51406097a7bd4f6b473be80f311ef7cda96bf383d8897"}, "revision": "588700d46356d8837c77c7c0a4e71e645fe6535983b8f1830aa8f2e4e41c40ae", "evidence_kind": "English manual and source declarations", "source_sha256": "a7fa7ed3d558172355f51406097a7bd4f6b473be80f311ef7cda96bf383d8897"}, "sources": [{"url": "/docs/14/app-psql.html#APP-PSQL-META-COMMANDS-CROSSTABVIEW", "file": "app-psql.html", "label": "14.24 English manual \u00b7 app-psql.html", "anchor": "APP-PSQL-META-COMMANDS-CROSSTABVIEW", "sha256": "8da20abaee171c53c05658cfb2580dea645070f40bad6b46a845d710ad74c3ae"}], "sections": [], "modifiers": [], "signature": "\\crosstabview [ colV [ colH [ colD [ sortcolH ] ] ] ]", "spellings": ["\\crosstabview"], "description": ["Executes the current query buffer (like \\g ) and shows the results in a crosstab grid. The query must return at least three columns. The output column identified by colV becomes a vertical header and the output column identified by colH becomes a horizontal header. colD identifies the output column to display within the grid. sortcolH identifies an optional sort column for the horizontal header."], "manual_html": "<div><dl class=\"variablelist\"><dt id=\"APP-PSQL-META-COMMANDS-CROSSTABVIEW\"><span class=\"term\"><code class=\"literal\">\\crosstabview [ <em class=\"replaceable\"><code>colV</code></em> [ <em class=\"replaceable\"><code>colH</code></em> [ <em class=\"replaceable\"><code>colD</code></em> [ <em class=\"replaceable\"><code>sortcolH</code></em> ] ] ] ]</code></span></dt><dd>\n<p>Executes the current query buffer (like <code class=\"literal\">\\g</code>) and shows the results in a crosstab grid. The query must return at least three columns. The output column identified by <em class=\"replaceable\"><code>colV</code></em> becomes a vertical header and the output column identified by <em class=\"replaceable\"><code>colH</code></em> becomes a horizontal header. <em class=\"replaceable\"><code>colD</code></em> identifies the output column to display within the grid. <em class=\"replaceable\"><code>sortcolH</code></em> identifies an optional sort column for the horizontal header.</p>\n<p>Each column specification can be a column number (starting at 1) or a column name. The usual SQL case folding and quoting rules apply to column names. If omitted, <em class=\"replaceable\"><code>colV</code></em> is taken as column 1 and <em class=\"replaceable\"><code>colH</code></em> as column 2. <em class=\"replaceable\"><code>colH</code></em> must differ from <em class=\"replaceable\"><code>colV</code></em>. If <em class=\"replaceable\"><code>colD</code></em> is not specified, then there must be exactly three columns in the query result, and the column that is neither <em class=\"replaceable\"><code>colV</code></em> nor <em class=\"replaceable\"><code>colH</code></em> is taken to be <em class=\"replaceable\"><code>colD</code></em>.</p>\n<p>The vertical header, displayed as the leftmost column, contains the values found in column <em class=\"replaceable\"><code>colV</code></em>, in the same order as in the query results, but with duplicates removed.</p>\n<p>The horizontal header, displayed as the first row, contains the values found in column <em class=\"replaceable\"><code>colH</code></em>, with duplicates removed. By default, these appear in the same order as in the query results. But if the optional <em class=\"replaceable\"><code>sortcolH</code></em> argument is given, it identifies a column whose values must be integer numbers, and the values from <em class=\"replaceable\"><code>colH</code></em> will appear in the horizontal header sorted according to the corresponding <em class=\"replaceable\"><code>sortcolH</code></em> values.</p>\n<p>Inside the crosstab grid, for each distinct value <code class=\"literal\">x</code> of <em class=\"replaceable\"><code>colH</code></em> and each distinct value <code class=\"literal\">y</code> of <em class=\"replaceable\"><code>colV</code></em>, the cell located at the intersection <code class=\"literal\">(x,y)</code> contains the value of the <code class=\"literal\">colD</code> column in the query result row for which the value of <em class=\"replaceable\"><code>colH</code></em> is <code class=\"literal\">x</code> and the value of <em class=\"replaceable\"><code>colV</code></em> is <code class=\"literal\">y</code>. If there is no such row, the cell is empty. If there are multiple such rows, an error is reported.</p>\n</dd></dl></div>", "manual_path": "app-psql.html#APP-PSQL-META-COMMANDS-CROSSTABVIEW", "comparison_data": {"modifiers": [], "signature": "\\crosstabview [ colV [ colH [ colD [ sortcolH ] ] ] ]", "spellings": ["\\crosstabview"], "definition": "Executes the current query buffer (like \\g ) and shows the results in a crosstab grid. The query must return at least three columns. The output column identified by colV becomes a vertical header and the output column identified by colH becomes a horizontal header. colD identifies the output column to display within the grid. sortcolH identifies an optional sort column for the horizontal header. Each column specification can be a column number (starting at 1) or a column name. The usual SQL case folding and quoting rules apply to column names. If omitted, colV is taken as column 1 and colH as column 2. colH must differ from colV . If colD is not specified, then there must be exactly three columns in the query result, and the column that is neither colV nor colH is taken to be colD . The vertical header, displayed as the leftmost column, contains the values found in column colV , in the same order as in the query results, but with duplicates removed. The horizontal header, displayed as the first row, contains the values found in column colH , with duplicates removed. By default, these appear in the same order as in the query results. But if the optional sortcolH argument is given, it identifies a column whose values must be integer numbers, and the values from colH will appear in the horizontal header sorted according to the corresponding sortcolH values. Inside the crosstab grid, for each distinct value x of colH and each distinct value y of colV , the cell located at the intersection (x,y) contains the value of the colD column in the query result row for which the value of colH is x and the value of colV is y . If there is no such row, the cell is empty. If there are multiple such rows, an error is reported."}, "comparison_hash": "abf12a81cd555025f4fc46d4903e789a1cd12690887288a72af1c4eec8aefa6b"}, "15": {"facts": [{"label": "Client", "value": "psql 15.19"}, {"label": "Case-sensitive spelling", "value": "\\crosstabview"}], "tables": [{"key": "spellings", "rows": [{"command": {"url": "/wiki/psql/cmd-63-72-6f-73-73-74-61-62-76-69-65-77/?v=15", "text": "\\crosstabview"}, "modifiers": "None listed in this signature"}], "title": "Spellings in this manual definition", "columns": [{"key": "command", "label": "Command"}, {"key": "modifiers", "label": "Documented suffix modifiers"}]}], "command": "\\crosstabview", "related": [{"url": "/wiki/tool/psql/?v=15", "label": "psql command-line options and complete manual"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v15.19/postgresql-15.19.tar.bz2", "label": "15.19", "major": "15", "channel": "stable", "manifest": {"pdf": {"A4": {"url": "/files/documentation/pdf/15/postgresql-15-A4.pdf", "bytes": 14609140, "pages": 2987, "sha256": "66228564a4d16efb47d6a914085716ecfe22ca1566db56bc7c3d82f790646d72", "built_at": "2026-09-26"}, "US": {"url": "/files/documentation/pdf/15/postgresql-15-US.pdf", "bytes": 14495690, "pages": 3153, "sha256": "645a498c2390d47a6223ec74770631185807a19c484edb0fc5a295d9f460bc02", "built_at": "2026-09-26"}}, "tree": "15", "index": "index.html", "major": "15", "pages": 1168, "release": "15.19", "source_url": "https://ftp.postgresql.org/pub/source/v15.19/postgresql-15.19.tar.bz2", "svg_assets": 3, "source_mode": "en HTML verified against the pinned official archive", "source_sha256": "e1a64a87a46b825b88c082e4518161a47aab53c45694964f8ba1df28f7859f89"}, "revision": "6af958c6520151fc7697d56e0616b03fb00522c4568158674d452ae0644ba545", "evidence_kind": "English manual and source declarations", "source_sha256": "e1a64a87a46b825b88c082e4518161a47aab53c45694964f8ba1df28f7859f89"}, "sources": [{"url": "/docs/15/app-psql.html#APP-PSQL-META-COMMANDS-CROSSTABVIEW", "file": "app-psql.html", "label": "15.19 English manual \u00b7 app-psql.html", "anchor": "APP-PSQL-META-COMMANDS-CROSSTABVIEW", "sha256": "cb07228edb4914a53530afca316fd700a250cc062af2d5a74d24add93afbd0c8"}], "sections": [], "modifiers": [], "signature": "\\crosstabview [ colV [ colH [ colD [ sortcolH ] ] ] ]", "spellings": ["\\crosstabview"], "description": ["Executes the current query buffer (like \\g ) and shows the results in a crosstab grid. The query must return at least three columns. The output column identified by colV becomes a vertical header and the output column identified by colH becomes a horizontal header. colD identifies the output column to display within the grid. sortcolH identifies an optional sort column for the horizontal header."], "manual_html": "<div><dl class=\"variablelist\"><dt id=\"APP-PSQL-META-COMMANDS-CROSSTABVIEW\"><span class=\"term\"><code class=\"literal\">\\crosstabview [ <em class=\"replaceable\"><code>colV</code></em> [ <em class=\"replaceable\"><code>colH</code></em> [ <em class=\"replaceable\"><code>colD</code></em> [ <em class=\"replaceable\"><code>sortcolH</code></em> ] ] ] ]</code></span></dt><dd>\n<p>Executes the current query buffer (like <code class=\"literal\">\\g</code>) and shows the results in a crosstab grid. The query must return at least three columns. The output column identified by <em class=\"replaceable\"><code>colV</code></em> becomes a vertical header and the output column identified by <em class=\"replaceable\"><code>colH</code></em> becomes a horizontal header. <em class=\"replaceable\"><code>colD</code></em> identifies the output column to display within the grid. <em class=\"replaceable\"><code>sortcolH</code></em> identifies an optional sort column for the horizontal header.</p>\n<p>Each column specification can be a column number (starting at 1) or a column name. The usual SQL case folding and quoting rules apply to column names. If omitted, <em class=\"replaceable\"><code>colV</code></em> is taken as column 1 and <em class=\"replaceable\"><code>colH</code></em> as column 2. <em class=\"replaceable\"><code>colH</code></em> must differ from <em class=\"replaceable\"><code>colV</code></em>. If <em class=\"replaceable\"><code>colD</code></em> is not specified, then there must be exactly three columns in the query result, and the column that is neither <em class=\"replaceable\"><code>colV</code></em> nor <em class=\"replaceable\"><code>colH</code></em> is taken to be <em class=\"replaceable\"><code>colD</code></em>.</p>\n<p>The vertical header, displayed as the leftmost column, contains the values found in column <em class=\"replaceable\"><code>colV</code></em>, in the same order as in the query results, but with duplicates removed.</p>\n<p>The horizontal header, displayed as the first row, contains the values found in column <em class=\"replaceable\"><code>colH</code></em>, with duplicates removed. By default, these appear in the same order as in the query results. But if the optional <em class=\"replaceable\"><code>sortcolH</code></em> argument is given, it identifies a column whose values must be integer numbers, and the values from <em class=\"replaceable\"><code>colH</code></em> will appear in the horizontal header sorted according to the corresponding <em class=\"replaceable\"><code>sortcolH</code></em> values.</p>\n<p>Inside the crosstab grid, for each distinct value <code class=\"literal\">x</code> of <em class=\"replaceable\"><code>colH</code></em> and each distinct value <code class=\"literal\">y</code> of <em class=\"replaceable\"><code>colV</code></em>, the cell located at the intersection <code class=\"literal\">(x,y)</code> contains the value of the <code class=\"literal\">colD</code> column in the query result row for which the value of <em class=\"replaceable\"><code>colH</code></em> is <code class=\"literal\">x</code> and the value of <em class=\"replaceable\"><code>colV</code></em> is <code class=\"literal\">y</code>. If there is no such row, the cell is empty. If there are multiple such rows, an error is reported.</p>\n</dd></dl></div>", "manual_path": "app-psql.html#APP-PSQL-META-COMMANDS-CROSSTABVIEW", "comparison_data": {"modifiers": [], "signature": "\\crosstabview [ colV [ colH [ colD [ sortcolH ] ] ] ]", "spellings": ["\\crosstabview"], "definition": "Executes the current query buffer (like \\g ) and shows the results in a crosstab grid. The query must return at least three columns. The output column identified by colV becomes a vertical header and the output column identified by colH becomes a horizontal header. colD identifies the output column to display within the grid. sortcolH identifies an optional sort column for the horizontal header. Each column specification can be a column number (starting at 1) or a column name. The usual SQL case folding and quoting rules apply to column names. If omitted, colV is taken as column 1 and colH as column 2. colH must differ from colV . If colD is not specified, then there must be exactly three columns in the query result, and the column that is neither colV nor colH is taken to be colD . The vertical header, displayed as the leftmost column, contains the values found in column colV , in the same order as in the query results, but with duplicates removed. The horizontal header, displayed as the first row, contains the values found in column colH , with duplicates removed. By default, these appear in the same order as in the query results. But if the optional sortcolH argument is given, it identifies a column whose values must be integer numbers, and the values from colH will appear in the horizontal header sorted according to the corresponding sortcolH values. Inside the crosstab grid, for each distinct value x of colH and each distinct value y of colV , the cell located at the intersection (x,y) contains the value of the colD column in the query result row for which the value of colH is x and the value of colV is y . If there is no such row, the cell is empty. If there are multiple such rows, an error is reported."}, "comparison_hash": "abf12a81cd555025f4fc46d4903e789a1cd12690887288a72af1c4eec8aefa6b"}, "16": {"facts": [{"label": "Client", "value": "psql 16.15"}, {"label": "Case-sensitive spelling", "value": "\\crosstabview"}], "tables": [{"key": "spellings", "rows": [{"command": {"url": "/wiki/psql/cmd-63-72-6f-73-73-74-61-62-76-69-65-77/?v=16", "text": "\\crosstabview"}, "modifiers": "None listed in this signature"}], "title": "Spellings in this manual definition", "columns": [{"key": "command", "label": "Command"}, {"key": "modifiers", "label": "Documented suffix modifiers"}]}], "command": "\\crosstabview", "related": [{"url": "/wiki/tool/psql/?v=16", "label": "psql command-line options and complete manual"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v16.15/postgresql-16.15.tar.bz2", "label": "16.15", "major": "16", "channel": "stable", "manifest": {"pdf": {"A4": {"url": "/files/documentation/pdf/16/postgresql-16-A4.pdf", "bytes": 15282337, "pages": 3055, "sha256": "4bb6c1f63deedac98736d8c4c7bc0fad0ac24e85b07e21ee10411872f06afd06", "built_at": "2026-09-26"}, "US": {"url": "/files/documentation/pdf/16/postgresql-16-US.pdf", "bytes": 15164148, "pages": 3220, "sha256": "5b6b6166c89991199e144bb0ae34c17a5f29826251dbf19db1abc0df3a3e771b", "built_at": "2026-09-26"}}, "tree": "16", "index": "index.html", "major": "16", "pages": 1169, "release": "16.15", "source_url": "https://ftp.postgresql.org/pub/source/v16.15/postgresql-16.15.tar.bz2", "svg_assets": 3, "source_mode": "en HTML verified against the pinned official archive", "source_sha256": "c1575341fa7bd40f5274ea465b34390f4dc64cdd0770af327005caaeb9f6b7ed"}, "revision": "3c21e58b35318021716440e67bb8bafd392b6a2b965a244d90e9e33c99e0bdef", "evidence_kind": "English manual and source declarations", "source_sha256": "c1575341fa7bd40f5274ea465b34390f4dc64cdd0770af327005caaeb9f6b7ed"}, "sources": [{"url": "/docs/16/app-psql.html#APP-PSQL-META-COMMANDS-CROSSTABVIEW", "file": "app-psql.html", "label": "16.15 English manual \u00b7 app-psql.html", "anchor": "APP-PSQL-META-COMMANDS-CROSSTABVIEW", "sha256": "add25957a1dfc97db721f2958782be186ab90dc0f0a47c4b720b2b6c26172493"}], "sections": [], "modifiers": [], "signature": "\\crosstabview [ colV [ colH [ colD [ sortcolH ] ] ] ]", "spellings": ["\\crosstabview"], "description": ["Executes the current query buffer (like \\g ) and shows the results in a crosstab grid. The query must return at least three columns. The output column identified by colV becomes a vertical header and the output column identified by colH becomes a horizontal header. colD identifies the output column to display within the grid. sortcolH identifies an optional sort column for the horizontal header."], "manual_html": "<div><dl class=\"variablelist\"><dt id=\"APP-PSQL-META-COMMANDS-CROSSTABVIEW\"><span class=\"term\"><code class=\"literal\">\\crosstabview [ <em class=\"replaceable\"><code>colV</code></em> [ <em class=\"replaceable\"><code>colH</code></em> [ <em class=\"replaceable\"><code>colD</code></em> [ <em class=\"replaceable\"><code>sortcolH</code></em> ] ] ] ]</code></span> </dt><dd>\n<p>Executes the current query buffer (like <code class=\"literal\">\\g</code>) and shows the results in a crosstab grid. The query must return at least three columns. The output column identified by <em class=\"replaceable\"><code>colV</code></em> becomes a vertical header and the output column identified by <em class=\"replaceable\"><code>colH</code></em> becomes a horizontal header. <em class=\"replaceable\"><code>colD</code></em> identifies the output column to display within the grid. <em class=\"replaceable\"><code>sortcolH</code></em> identifies an optional sort column for the horizontal header.</p>\n<p>Each column specification can be a column number (starting at 1) or a column name. The usual SQL case folding and quoting rules apply to column names. If omitted, <em class=\"replaceable\"><code>colV</code></em> is taken as column 1 and <em class=\"replaceable\"><code>colH</code></em> as column 2. <em class=\"replaceable\"><code>colH</code></em> must differ from <em class=\"replaceable\"><code>colV</code></em>. If <em class=\"replaceable\"><code>colD</code></em> is not specified, then there must be exactly three columns in the query result, and the column that is neither <em class=\"replaceable\"><code>colV</code></em> nor <em class=\"replaceable\"><code>colH</code></em> is taken to be <em class=\"replaceable\"><code>colD</code></em>.</p>\n<p>The vertical header, displayed as the leftmost column, contains the values found in column <em class=\"replaceable\"><code>colV</code></em>, in the same order as in the query results, but with duplicates removed.</p>\n<p>The horizontal header, displayed as the first row, contains the values found in column <em class=\"replaceable\"><code>colH</code></em>, with duplicates removed. By default, these appear in the same order as in the query results. But if the optional <em class=\"replaceable\"><code>sortcolH</code></em> argument is given, it identifies a column whose values must be integer numbers, and the values from <em class=\"replaceable\"><code>colH</code></em> will appear in the horizontal header sorted according to the corresponding <em class=\"replaceable\"><code>sortcolH</code></em> values.</p>\n<p>Inside the crosstab grid, for each distinct value <code class=\"literal\">x</code> of <em class=\"replaceable\"><code>colH</code></em> and each distinct value <code class=\"literal\">y</code> of <em class=\"replaceable\"><code>colV</code></em>, the cell located at the intersection <code class=\"literal\">(x,y)</code> contains the value of the <code class=\"literal\">colD</code> column in the query result row for which the value of <em class=\"replaceable\"><code>colH</code></em> is <code class=\"literal\">x</code> and the value of <em class=\"replaceable\"><code>colV</code></em> is <code class=\"literal\">y</code>. If there is no such row, the cell is empty. If there are multiple such rows, an error is reported.</p>\n</dd></dl></div>", "manual_path": "app-psql.html#APP-PSQL-META-COMMANDS-CROSSTABVIEW", "comparison_data": {"modifiers": [], "signature": "\\crosstabview [ colV [ colH [ colD [ sortcolH ] ] ] ]", "spellings": ["\\crosstabview"], "definition": "Executes the current query buffer (like \\g ) and shows the results in a crosstab grid. The query must return at least three columns. The output column identified by colV becomes a vertical header and the output column identified by colH becomes a horizontal header. colD identifies the output column to display within the grid. sortcolH identifies an optional sort column for the horizontal header. Each column specification can be a column number (starting at 1) or a column name. The usual SQL case folding and quoting rules apply to column names. If omitted, colV is taken as column 1 and colH as column 2. colH must differ from colV . If colD is not specified, then there must be exactly three columns in the query result, and the column that is neither colV nor colH is taken to be colD . The vertical header, displayed as the leftmost column, contains the values found in column colV , in the same order as in the query results, but with duplicates removed. The horizontal header, displayed as the first row, contains the values found in column colH , with duplicates removed. By default, these appear in the same order as in the query results. But if the optional sortcolH argument is given, it identifies a column whose values must be integer numbers, and the values from colH will appear in the horizontal header sorted according to the corresponding sortcolH values. Inside the crosstab grid, for each distinct value x of colH and each distinct value y of colV , the cell located at the intersection (x,y) contains the value of the colD column in the query result row for which the value of colH is x and the value of colV is y . If there is no such row, the cell is empty. If there are multiple such rows, an error is reported."}, "comparison_hash": "abf12a81cd555025f4fc46d4903e789a1cd12690887288a72af1c4eec8aefa6b"}, "17": {"facts": [{"label": "Client", "value": "psql 17.11"}, {"label": "Case-sensitive spelling", "value": "\\crosstabview"}], "tables": [{"key": "spellings", "rows": [{"command": {"url": "/wiki/psql/cmd-63-72-6f-73-73-74-61-62-76-69-65-77/?v=17", "text": "\\crosstabview"}, "modifiers": "None listed in this signature"}], "title": "Spellings in this manual definition", "columns": [{"key": "command", "label": "Command"}, {"key": "modifiers", "label": "Documented suffix modifiers"}]}], "command": "\\crosstabview", "related": [{"url": "/wiki/tool/psql/?v=17", "label": "psql command-line options and complete manual"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v17.11/postgresql-17.11.tar.bz2", "label": "17.11", "major": "17", "channel": "stable", "manifest": {"pdf": {"A4": {"url": "/files/documentation/pdf/17/postgresql-17-A4.pdf", "bytes": 15521293, "pages": 3099, "sha256": "1991354df0dc89e70ec39328c28988ef8b19c6a93671dab3893650b63e9f4e36", "built_at": "2026-09-26"}, "US": {"url": "/files/documentation/pdf/17/postgresql-17-US.pdf", "bytes": 15398150, "pages": 3270, "sha256": "07696c8f38abf31babf22d2db337093936e7c472d2af36d050b000c49bbcf52c", "built_at": "2026-09-26"}}, "tree": "17", "index": "index.html", "major": "17", "pages": 1143, "release": "17.11", "source_url": "https://ftp.postgresql.org/pub/source/v17.11/postgresql-17.11.tar.bz2", "svg_assets": 3, "source_mode": "en SGML built with pinned official archive", "source_sha256": "dd27f2b3c59e73ed14aa3324901242bf69a032a6347805f274e6260322d42979"}, "revision": "58419c9b0dd42cb34c8d53695bb025a7e582edf55ccd4c5bcb1c2c7c71a37487", "evidence_kind": "English manual and source declarations", "source_sha256": "dd27f2b3c59e73ed14aa3324901242bf69a032a6347805f274e6260322d42979"}, "sources": [{"url": "/docs/17/app-psql.html#APP-PSQL-META-COMMANDS-CROSSTABVIEW", "file": "app-psql.html", "label": "17.11 English manual \u00b7 app-psql.html", "anchor": "APP-PSQL-META-COMMANDS-CROSSTABVIEW", "sha256": "04c77661f1c96a64e91a27313542c34aff0c7d2a94e350ed98c6f9f35700629b"}], "sections": [], "modifiers": [], "signature": "\\crosstabview [ colV [ colH [ colD [ sortcolH ] ] ] ]", "spellings": ["\\crosstabview"], "description": ["Executes the current query buffer (like \\g ) and shows the results in a crosstab grid. The query must return at least three columns. The output column identified by colV becomes a vertical header and the output column identified by colH becomes a horizontal header. colD identifies the output column to display within the grid. sortcolH identifies an optional sort column for the horizontal header."], "manual_html": "<div><dl class=\"variablelist\"><dt id=\"APP-PSQL-META-COMMANDS-CROSSTABVIEW\"><span class=\"term\"><code class=\"literal\">\\crosstabview [ <em class=\"replaceable\"><code>colV</code></em> [ <em class=\"replaceable\"><code>colH</code></em> [ <em class=\"replaceable\"><code>colD</code></em> [ <em class=\"replaceable\"><code>sortcolH</code></em> ] ] ] ]</code></span> </dt><dd>\n<p>Executes the current query buffer (like <code class=\"literal\">\\g</code>) and shows the results in a crosstab grid. The query must return at least three columns. The output column identified by <em class=\"replaceable\"><code>colV</code></em> becomes a vertical header and the output column identified by <em class=\"replaceable\"><code>colH</code></em> becomes a horizontal header. <em class=\"replaceable\"><code>colD</code></em> identifies the output column to display within the grid. <em class=\"replaceable\"><code>sortcolH</code></em> identifies an optional sort column for the horizontal header.</p>\n<p>Each column specification can be a column number (starting at 1) or a column name. The usual SQL case folding and quoting rules apply to column names. If omitted, <em class=\"replaceable\"><code>colV</code></em> is taken as column 1 and <em class=\"replaceable\"><code>colH</code></em> as column 2. <em class=\"replaceable\"><code>colH</code></em> must differ from <em class=\"replaceable\"><code>colV</code></em>. If <em class=\"replaceable\"><code>colD</code></em> is not specified, then there must be exactly three columns in the query result, and the column that is neither <em class=\"replaceable\"><code>colV</code></em> nor <em class=\"replaceable\"><code>colH</code></em> is taken to be <em class=\"replaceable\"><code>colD</code></em>.</p>\n<p>The vertical header, displayed as the leftmost column, contains the values found in column <em class=\"replaceable\"><code>colV</code></em>, in the same order as in the query results, but with duplicates removed.</p>\n<p>The horizontal header, displayed as the first row, contains the values found in column <em class=\"replaceable\"><code>colH</code></em>, with duplicates removed. By default, these appear in the same order as in the query results. But if the optional <em class=\"replaceable\"><code>sortcolH</code></em> argument is given, it identifies a column whose values must be integer numbers, and the values from <em class=\"replaceable\"><code>colH</code></em> will appear in the horizontal header sorted according to the corresponding <em class=\"replaceable\"><code>sortcolH</code></em> values.</p>\n<p>Inside the crosstab grid, for each distinct value <code class=\"literal\">x</code> of <em class=\"replaceable\"><code>colH</code></em> and each distinct value <code class=\"literal\">y</code> of <em class=\"replaceable\"><code>colV</code></em>, the cell located at the intersection <code class=\"literal\">(x,y)</code> contains the value of the <code class=\"literal\">colD</code> column in the query result row for which the value of <em class=\"replaceable\"><code>colH</code></em> is <code class=\"literal\">x</code> and the value of <em class=\"replaceable\"><code>colV</code></em> is <code class=\"literal\">y</code>. If there is no such row, the cell is empty. If there are multiple such rows, an error is reported.</p>\n</dd></dl></div>", "manual_path": "app-psql.html#APP-PSQL-META-COMMANDS-CROSSTABVIEW", "comparison_data": {"modifiers": [], "signature": "\\crosstabview [ colV [ colH [ colD [ sortcolH ] ] ] ]", "spellings": ["\\crosstabview"], "definition": "Executes the current query buffer (like \\g ) and shows the results in a crosstab grid. The query must return at least three columns. The output column identified by colV becomes a vertical header and the output column identified by colH becomes a horizontal header. colD identifies the output column to display within the grid. sortcolH identifies an optional sort column for the horizontal header. Each column specification can be a column number (starting at 1) or a column name. The usual SQL case folding and quoting rules apply to column names. If omitted, colV is taken as column 1 and colH as column 2. colH must differ from colV . If colD is not specified, then there must be exactly three columns in the query result, and the column that is neither colV nor colH is taken to be colD . The vertical header, displayed as the leftmost column, contains the values found in column colV , in the same order as in the query results, but with duplicates removed. The horizontal header, displayed as the first row, contains the values found in column colH , with duplicates removed. By default, these appear in the same order as in the query results. But if the optional sortcolH argument is given, it identifies a column whose values must be integer numbers, and the values from colH will appear in the horizontal header sorted according to the corresponding sortcolH values. Inside the crosstab grid, for each distinct value x of colH and each distinct value y of colV , the cell located at the intersection (x,y) contains the value of the colD column in the query result row for which the value of colH is x and the value of colV is y . If there is no such row, the cell is empty. If there are multiple such rows, an error is reported."}, "comparison_hash": "abf12a81cd555025f4fc46d4903e789a1cd12690887288a72af1c4eec8aefa6b"}, "18": {"facts": [{"label": "Client", "value": "psql 18.6"}, {"label": "Case-sensitive spelling", "value": "\\crosstabview"}], "tables": [{"key": "spellings", "rows": [{"command": {"url": "/wiki/psql/cmd-63-72-6f-73-73-74-61-62-76-69-65-77/?v=18", "text": "\\crosstabview"}, "modifiers": "None listed in this signature"}], "title": "Spellings in this manual definition", "columns": [{"key": "command", "label": "Command"}, {"key": "modifiers", "label": "Documented suffix modifiers"}]}], "command": "\\crosstabview", "related": [{"url": "/wiki/tool/psql/?v=18", "label": "psql command-line options and complete manual"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "label": "18.6", "major": "18", "channel": "stable", "manifest": {"pdf": {"A4": {"url": "/files/documentation/pdf/18/postgresql-18-A4.pdf", "bytes": 15865106, "pages": 3154, "sha256": "19512c405da53f9f7fcf0abba359223aa65f021be025bf3411381918f92e3190", "built_at": "2026-09-26"}, "US": {"url": "/files/documentation/pdf/18/postgresql-18-US.pdf", "bytes": 15748059, "pages": 3328, "sha256": "facbe6c229e598b872d3d98bef53308f46e06746006fa4590de9a7de9dd46319", "built_at": "2026-09-26"}}, "tree": "18", "index": "index.html", "major": "18", "pages": 1148, "release": "18.6", "source_url": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "svg_assets": 3, "source_mode": "en SGML built with pinned official archive", "source_sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "revision": "ee8d1a3612338fd9adf250730cb640fcc5233b5491337cc00a316a44e3a0b9f8", "evidence_kind": "English manual and source declarations", "source_sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "sources": [{"url": "/docs/18/app-psql.html#APP-PSQL-META-COMMANDS-CROSSTABVIEW", "file": "app-psql.html", "label": "18.6 English manual \u00b7 app-psql.html", "anchor": "APP-PSQL-META-COMMANDS-CROSSTABVIEW", "sha256": "fa2a1d39294b8854318e82e93f71272c645ed88150ecc2786c28902c3f32782c"}], "sections": [], "modifiers": [], "signature": "\\crosstabview [ colV [ colH [ colD [ sortcolH ] ] ] ]", "spellings": ["\\crosstabview"], "description": ["Executes the current query buffer (like \\g ) and shows the results in a crosstab grid. The query must return at least three columns. The output column identified by colV becomes a vertical header and the output column identified by colH becomes a horizontal header. colD identifies the output column to display within the grid. sortcolH identifies an optional sort column for the horizontal header."], "manual_html": "<div><dl class=\"variablelist\"><dt id=\"APP-PSQL-META-COMMANDS-CROSSTABVIEW\"><span class=\"term\"><code class=\"literal\">\\crosstabview [ <em class=\"replaceable\"><code>colV</code></em> [ <em class=\"replaceable\"><code>colH</code></em> [ <em class=\"replaceable\"><code>colD</code></em> [ <em class=\"replaceable\"><code>sortcolH</code></em> ] ] ] ]</code></span> </dt><dd>\n<p>Executes the current query buffer (like <code class=\"literal\">\\g</code>) and shows the results in a crosstab grid. The query must return at least three columns. The output column identified by <em class=\"replaceable\"><code>colV</code></em> becomes a vertical header and the output column identified by <em class=\"replaceable\"><code>colH</code></em> becomes a horizontal header. <em class=\"replaceable\"><code>colD</code></em> identifies the output column to display within the grid. <em class=\"replaceable\"><code>sortcolH</code></em> identifies an optional sort column for the horizontal header.</p>\n<p>Each column specification can be a column number (starting at 1) or a column name. The usual SQL case folding and quoting rules apply to column names. If omitted, <em class=\"replaceable\"><code>colV</code></em> is taken as column 1 and <em class=\"replaceable\"><code>colH</code></em> as column 2. <em class=\"replaceable\"><code>colH</code></em> must differ from <em class=\"replaceable\"><code>colV</code></em>. If <em class=\"replaceable\"><code>colD</code></em> is not specified, then there must be exactly three columns in the query result, and the column that is neither <em class=\"replaceable\"><code>colV</code></em> nor <em class=\"replaceable\"><code>colH</code></em> is taken to be <em class=\"replaceable\"><code>colD</code></em>.</p>\n<p>The vertical header, displayed as the leftmost column, contains the values found in column <em class=\"replaceable\"><code>colV</code></em>, in the same order as in the query results, but with duplicates removed.</p>\n<p>The horizontal header, displayed as the first row, contains the values found in column <em class=\"replaceable\"><code>colH</code></em>, with duplicates removed. By default, these appear in the same order as in the query results. But if the optional <em class=\"replaceable\"><code>sortcolH</code></em> argument is given, it identifies a column whose values must be integer numbers, and the values from <em class=\"replaceable\"><code>colH</code></em> will appear in the horizontal header sorted according to the corresponding <em class=\"replaceable\"><code>sortcolH</code></em> values.</p>\n<p>Inside the crosstab grid, for each distinct value <code class=\"literal\">x</code> of <em class=\"replaceable\"><code>colH</code></em> and each distinct value <code class=\"literal\">y</code> of <em class=\"replaceable\"><code>colV</code></em>, the cell located at the intersection <code class=\"literal\">(x,y)</code> contains the value of the <code class=\"literal\">colD</code> column in the query result row for which the value of <em class=\"replaceable\"><code>colH</code></em> is <code class=\"literal\">x</code> and the value of <em class=\"replaceable\"><code>colV</code></em> is <code class=\"literal\">y</code>. If there is no such row, the cell is empty. If there are multiple such rows, an error is reported.</p>\n</dd></dl></div>", "manual_path": "app-psql.html#APP-PSQL-META-COMMANDS-CROSSTABVIEW", "comparison_data": {"modifiers": [], "signature": "\\crosstabview [ colV [ colH [ colD [ sortcolH ] ] ] ]", "spellings": ["\\crosstabview"], "definition": "Executes the current query buffer (like \\g ) and shows the results in a crosstab grid. The query must return at least three columns. The output column identified by colV becomes a vertical header and the output column identified by colH becomes a horizontal header. colD identifies the output column to display within the grid. sortcolH identifies an optional sort column for the horizontal header. Each column specification can be a column number (starting at 1) or a column name. The usual SQL case folding and quoting rules apply to column names. If omitted, colV is taken as column 1 and colH as column 2. colH must differ from colV . If colD is not specified, then there must be exactly three columns in the query result, and the column that is neither colV nor colH is taken to be colD . The vertical header, displayed as the leftmost column, contains the values found in column colV , in the same order as in the query results, but with duplicates removed. The horizontal header, displayed as the first row, contains the values found in column colH , with duplicates removed. By default, these appear in the same order as in the query results. But if the optional sortcolH argument is given, it identifies a column whose values must be integer numbers, and the values from colH will appear in the horizontal header sorted according to the corresponding sortcolH values. Inside the crosstab grid, for each distinct value x of colH and each distinct value y of colV , the cell located at the intersection (x,y) contains the value of the colD column in the query result row for which the value of colH is x and the value of colV is y . If there is no such row, the cell is empty. If there are multiple such rows, an error is reported."}, "comparison_hash": "abf12a81cd555025f4fc46d4903e789a1cd12690887288a72af1c4eec8aefa6b"}, "19": {"facts": [{"label": "Client", "value": "psql 19beta4"}, {"label": "Case-sensitive spelling", "value": "\\crosstabview"}], "tables": [{"key": "spellings", "rows": [{"command": {"url": "/wiki/psql/cmd-63-72-6f-73-73-74-61-62-76-69-65-77/?v=19", "text": "\\crosstabview"}, "modifiers": "None listed in this signature"}], "title": "Spellings in this manual definition", "columns": [{"key": "command", "label": "Command"}, {"key": "modifiers", "label": "Documented suffix modifiers"}]}], "command": "\\crosstabview", "related": [{"url": "/wiki/tool/psql/?v=19", "label": "psql command-line options and complete manual"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v19beta4/postgresql-19beta4.tar.bz2", "label": "19beta4", "major": "19", "channel": "preview", "manifest": {"pdf": {"A4": {"url": "/files/documentation/pdf/19/postgresql-19-A4.pdf", "bytes": 16064841, "pages": 3052, "sha256": "4dd099e4125c591128fc5f3ebd02178dc24781f9e5ae629f96d67c4c8547427b", "built_at": "2026-09-26"}, "US": {"url": "/files/documentation/pdf/19/postgresql-19-US.pdf", "bytes": 15974616, "pages": 3225, "sha256": "61971fa857f0956d47341a0388fa6af9ae10acf691d4b2fc009007d384b0342b", "built_at": "2026-09-26"}}, "tree": "19", "index": "index.html", "major": "19", "pages": 1155, "release": "19beta4", "source_url": "https://ftp.postgresql.org/pub/source/v19beta4/postgresql-19beta4.tar.bz2", "svg_assets": 5, "source_mode": "en SGML built with pinned official archive", "source_sha256": "83157ee9c599d03b2f7a3d73ef3a56ec24e0e79cc2b3501a64d1364f56398c86"}, "revision": "1bbbbf4133d426f0e4304010688d2984c30fb67df0cc3a61b3e37eb3f6f37833", "evidence_kind": "English manual and source declarations", "source_sha256": "83157ee9c599d03b2f7a3d73ef3a56ec24e0e79cc2b3501a64d1364f56398c86"}, "sources": [{"url": "/docs/19/app-psql.html#APP-PSQL-META-COMMANDS-CROSSTABVIEW", "file": "app-psql.html", "label": "19beta4 English manual \u00b7 app-psql.html", "anchor": "APP-PSQL-META-COMMANDS-CROSSTABVIEW", "sha256": "312975c12d6e4d62aeebcb5e98e7ca795c6d07ecb743b4bc64403dc42bc2a6e9"}], "sections": [], "modifiers": [], "signature": "\\crosstabview [ colV [ colH [ colD [ sortcolH ] ] ] ]", "spellings": ["\\crosstabview"], "description": ["Executes the current query buffer (like \\g ) and shows the results in a crosstab grid. The query must return at least three columns. The output column identified by colV becomes a vertical header and the output column identified by colH becomes a horizontal header. colD identifies the output column to display within the grid. sortcolH identifies an optional sort column for the horizontal header."], "manual_html": "<div><dl class=\"variablelist\"><dt id=\"APP-PSQL-META-COMMANDS-CROSSTABVIEW\"><span class=\"term\"><code class=\"literal\">\\crosstabview [ <em class=\"replaceable\"><code>colV</code></em> [ <em class=\"replaceable\"><code>colH</code></em> [ <em class=\"replaceable\"><code>colD</code></em> [ <em class=\"replaceable\"><code>sortcolH</code></em> ] ] ] ]</code></span> </dt><dd>\n<p>Executes the current query buffer (like <code class=\"literal\">\\g</code>) and shows the results in a crosstab grid. The query must return at least three columns. The output column identified by <em class=\"replaceable\"><code>colV</code></em> becomes a vertical header and the output column identified by <em class=\"replaceable\"><code>colH</code></em> becomes a horizontal header. <em class=\"replaceable\"><code>colD</code></em> identifies the output column to display within the grid. <em class=\"replaceable\"><code>sortcolH</code></em> identifies an optional sort column for the horizontal header.</p>\n<p>Each column specification can be a column number (starting at 1) or a column name. The usual SQL case folding and quoting rules apply to column names. If omitted, <em class=\"replaceable\"><code>colV</code></em> is taken as column 1 and <em class=\"replaceable\"><code>colH</code></em> as column 2. <em class=\"replaceable\"><code>colH</code></em> must differ from <em class=\"replaceable\"><code>colV</code></em>. If <em class=\"replaceable\"><code>colD</code></em> is not specified, then there must be exactly three columns in the query result, and the column that is neither <em class=\"replaceable\"><code>colV</code></em> nor <em class=\"replaceable\"><code>colH</code></em> is taken to be <em class=\"replaceable\"><code>colD</code></em>.</p>\n<p>The vertical header, displayed as the leftmost column, contains the values found in column <em class=\"replaceable\"><code>colV</code></em>, in the same order as in the query results, but with duplicates removed.</p>\n<p>The horizontal header, displayed as the first row, contains the values found in column <em class=\"replaceable\"><code>colH</code></em>, with duplicates removed. By default, these appear in the same order as in the query results. But if the optional <em class=\"replaceable\"><code>sortcolH</code></em> argument is given, it identifies a column whose values must be integer numbers, and the values from <em class=\"replaceable\"><code>colH</code></em> will appear in the horizontal header sorted according to the corresponding <em class=\"replaceable\"><code>sortcolH</code></em> values.</p>\n<p>Inside the crosstab grid, for each distinct value <code class=\"literal\">x</code> of <em class=\"replaceable\"><code>colH</code></em> and each distinct value <code class=\"literal\">y</code> of <em class=\"replaceable\"><code>colV</code></em>, the cell located at the intersection <code class=\"literal\">(x,y)</code> contains the value of the <code class=\"literal\">colD</code> column in the query result row for which the value of <em class=\"replaceable\"><code>colH</code></em> is <code class=\"literal\">x</code> and the value of <em class=\"replaceable\"><code>colV</code></em> is <code class=\"literal\">y</code>. If there is no such row, the cell is empty. If there are multiple such rows, an error is reported.</p>\n</dd></dl></div>", "manual_path": "app-psql.html#APP-PSQL-META-COMMANDS-CROSSTABVIEW", "comparison_data": {"modifiers": [], "signature": "\\crosstabview [ colV [ colH [ colD [ sortcolH ] ] ] ]", "spellings": ["\\crosstabview"], "definition": "Executes the current query buffer (like \\g ) and shows the results in a crosstab grid. The query must return at least three columns. The output column identified by colV becomes a vertical header and the output column identified by colH becomes a horizontal header. colD identifies the output column to display within the grid. sortcolH identifies an optional sort column for the horizontal header. Each column specification can be a column number (starting at 1) or a column name. The usual SQL case folding and quoting rules apply to column names. If omitted, colV is taken as column 1 and colH as column 2. colH must differ from colV . If colD is not specified, then there must be exactly three columns in the query result, and the column that is neither colV nor colH is taken to be colD . The vertical header, displayed as the leftmost column, contains the values found in column colV , in the same order as in the query results, but with duplicates removed. The horizontal header, displayed as the first row, contains the values found in column colH , with duplicates removed. By default, these appear in the same order as in the query results. But if the optional sortcolH argument is given, it identifies a column whose values must be integer numbers, and the values from colH will appear in the horizontal header sorted according to the corresponding sortcolH values. Inside the crosstab grid, for each distinct value x of colH and each distinct value y of colV , the cell located at the intersection (x,y) contains the value of the colD column in the query result row for which the value of colH is x and the value of colV is y . If there is no such row, the cell is empty. If there are multiple such rows, an error is reported."}, "comparison_hash": "abf12a81cd555025f4fc46d4903e789a1cd12690887288a72af1c4eec8aefa6b"}, "20": {"facts": [{"label": "Client", "value": "psql 20devel"}, {"label": "Case-sensitive spelling", "value": "\\crosstabview"}], "tables": [{"key": "spellings", "rows": [{"command": {"url": "/wiki/psql/cmd-63-72-6f-73-73-74-61-62-76-69-65-77/?v=20", "text": "\\crosstabview"}, "modifiers": "None listed in this signature"}], "title": "Spellings in this manual definition", "columns": [{"key": "command", "label": "Command"}, {"key": "modifiers", "label": "Documented suffix modifiers"}]}], "command": "\\crosstabview", "related": [{"url": "/wiki/tool/psql/?v=20", "label": "psql command-line options and complete manual"}], "release": {"ref": "https://ftp.postgresql.org/pub/snapshot/dev/postgresql-snapshot.tar.bz2", "label": "20devel", "major": "20", "channel": "devel", "manifest": {"pdf": {"A4": {"url": "/files/documentation/pdf/20/postgresql-20-A4.pdf", "bytes": 16030631, "pages": 3052, "sha256": "bd5d82c0ce38fc18f92a0447818a91a193a261776bca1c37564bf9a683e177d0", "built_at": "2026-09-28"}, "US": {"url": "/files/documentation/pdf/20/postgresql-20-US.pdf", "bytes": 15936613, "pages": 3223, "sha256": "d97d9e0db479a02f4234b175f50fcad70c3661619afc8d6df9b9437882e3c299", "built_at": "2026-09-28"}}, "tree": "0", "index": "index.html", "major": "20", "pages": 1156, "release": "20devel", "source_url": "https://ftp.postgresql.org/pub/snapshot/dev/postgresql-snapshot.tar.bz2", "svg_assets": 6, "source_mode": "en SGML built with pinned official archive", "source_sha256": "4d3346909b201ac1648232cf290462a7070c119326f56196f1f0253ed80fae41", "source_snapshot_utc": "26-Sep-2026 20:22"}, "revision": "2eba5e0fd4c3bffb2803247b6cd537878e9d6ee5a6dfbe3c50ece8b421b80918", "evidence_kind": "English manual and source declarations", "source_sha256": "4d3346909b201ac1648232cf290462a7070c119326f56196f1f0253ed80fae41"}, "sources": [{"url": "/docs/devel/app-psql.html#APP-PSQL-META-COMMANDS-CROSSTABVIEW", "file": "app-psql.html", "label": "20devel English manual \u00b7 app-psql.html", "anchor": "APP-PSQL-META-COMMANDS-CROSSTABVIEW", "sha256": "6df5f6fbaff7800ae0e4a08a3116090d890a0cdcc02fddc31c1f220725905f87"}], "sections": [], "modifiers": [], "signature": "\\crosstabview [ colV [ colH [ colD [ sortcolH ] ] ] ]", "spellings": ["\\crosstabview"], "description": ["Executes the current query buffer (like \\g ) and shows the results in a crosstab grid. The query must return at least three columns. The output column identified by colV becomes a vertical header and the output column identified by colH becomes a horizontal header. colD identifies the output column to display within the grid. sortcolH identifies an optional sort column for the horizontal header."], "manual_html": "<div><dl class=\"variablelist\"><dt id=\"APP-PSQL-META-COMMANDS-CROSSTABVIEW\"><span class=\"term\"><code class=\"literal\">\\crosstabview [ <em class=\"replaceable\"><code>colV</code></em> [ <em class=\"replaceable\"><code>colH</code></em> [ <em class=\"replaceable\"><code>colD</code></em> [ <em class=\"replaceable\"><code>sortcolH</code></em> ] ] ] ]</code></span> </dt><dd>\n<p>Executes the current query buffer (like <code class=\"literal\">\\g</code>) and shows the results in a crosstab grid. The query must return at least three columns. The output column identified by <em class=\"replaceable\"><code>colV</code></em> becomes a vertical header and the output column identified by <em class=\"replaceable\"><code>colH</code></em> becomes a horizontal header. <em class=\"replaceable\"><code>colD</code></em> identifies the output column to display within the grid. <em class=\"replaceable\"><code>sortcolH</code></em> identifies an optional sort column for the horizontal header.</p>\n<p>Each column specification can be a column number (starting at 1) or a column name. The usual SQL case folding and quoting rules apply to column names. If omitted, <em class=\"replaceable\"><code>colV</code></em> is taken as column 1 and <em class=\"replaceable\"><code>colH</code></em> as column 2. <em class=\"replaceable\"><code>colH</code></em> must differ from <em class=\"replaceable\"><code>colV</code></em>. If <em class=\"replaceable\"><code>colD</code></em> is not specified, then there must be exactly three columns in the query result, and the column that is neither <em class=\"replaceable\"><code>colV</code></em> nor <em class=\"replaceable\"><code>colH</code></em> is taken to be <em class=\"replaceable\"><code>colD</code></em>.</p>\n<p>The vertical header, displayed as the leftmost column, contains the values found in column <em class=\"replaceable\"><code>colV</code></em>, in the same order as in the query results, but with duplicates removed.</p>\n<p>The horizontal header, displayed as the first row, contains the values found in column <em class=\"replaceable\"><code>colH</code></em>, with duplicates removed. By default, these appear in the same order as in the query results. But if the optional <em class=\"replaceable\"><code>sortcolH</code></em> argument is given, it identifies a column whose values must be integer numbers, and the values from <em class=\"replaceable\"><code>colH</code></em> will appear in the horizontal header sorted according to the corresponding <em class=\"replaceable\"><code>sortcolH</code></em> values.</p>\n<p>Inside the crosstab grid, for each distinct value <code class=\"literal\">x</code> of <em class=\"replaceable\"><code>colH</code></em> and each distinct value <code class=\"literal\">y</code> of <em class=\"replaceable\"><code>colV</code></em>, the cell located at the intersection <code class=\"literal\">(x,y)</code> contains the value of the <code class=\"literal\">colD</code> column in the query result row for which the value of <em class=\"replaceable\"><code>colH</code></em> is <code class=\"literal\">x</code> and the value of <em class=\"replaceable\"><code>colV</code></em> is <code class=\"literal\">y</code>. If there is no such row, the cell is empty. If there are multiple such rows, an error is reported.</p>\n</dd></dl></div>", "manual_path": "app-psql.html#APP-PSQL-META-COMMANDS-CROSSTABVIEW", "comparison_data": {"modifiers": [], "signature": "\\crosstabview [ colV [ colH [ colD [ sortcolH ] ] ] ]", "spellings": ["\\crosstabview"], "definition": "Executes the current query buffer (like \\g ) and shows the results in a crosstab grid. The query must return at least three columns. The output column identified by colV becomes a vertical header and the output column identified by colH becomes a horizontal header. colD identifies the output column to display within the grid. sortcolH identifies an optional sort column for the horizontal header. Each column specification can be a column number (starting at 1) or a column name. The usual SQL case folding and quoting rules apply to column names. If omitted, colV is taken as column 1 and colH as column 2. colH must differ from colV . If colD is not specified, then there must be exactly three columns in the query result, and the column that is neither colV nor colH is taken to be colD . The vertical header, displayed as the leftmost column, contains the values found in column colV , in the same order as in the query results, but with duplicates removed. The horizontal header, displayed as the first row, contains the values found in column colH , with duplicates removed. By default, these appear in the same order as in the query results. But if the optional sortcolH argument is given, it identifies a column whose values must be integer numbers, and the values from colH will appear in the horizontal header sorted according to the corresponding sortcolH values. Inside the crosstab grid, for each distinct value x of colH and each distinct value y of colV , the cell located at the intersection (x,y) contains the value of the colD column in the query result row for which the value of colH is x and the value of colV is y . If there is no such row, the cell is empty. If there are multiple such rows, an error is reported."}, "comparison_hash": "abf12a81cd555025f4fc46d4903e789a1cd12690887288a72af1c4eec8aefa6b"}}}, "snapshot": {"facts": [{"label": "Client", "value": "psql 18.6"}, {"label": "Case-sensitive spelling", "value": "\\crosstabview"}], "tables": [{"key": "spellings", "rows": [{"command": {"url": "/wiki/psql/cmd-63-72-6f-73-73-74-61-62-76-69-65-77/?v=18", "text": "\\crosstabview"}, "modifiers": "None listed in this signature"}], "title": "Spellings in this manual definition", "columns": [{"key": "command", "label": "Command"}, {"key": "modifiers", "label": "Documented suffix modifiers"}]}], "command": "\\crosstabview", "related": [{"url": "/wiki/tool/psql/?v=18", "label": "psql command-line options and complete manual"}], "release": {"ref": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "label": "18.6", "major": "18", "channel": "stable", "manifest": {"pdf": {"A4": {"url": "/files/documentation/pdf/18/postgresql-18-A4.pdf", "bytes": 15865106, "pages": 3154, "sha256": "19512c405da53f9f7fcf0abba359223aa65f021be025bf3411381918f92e3190", "built_at": "2026-09-26"}, "US": {"url": "/files/documentation/pdf/18/postgresql-18-US.pdf", "bytes": 15748059, "pages": 3328, "sha256": "facbe6c229e598b872d3d98bef53308f46e06746006fa4590de9a7de9dd46319", "built_at": "2026-09-26"}}, "tree": "18", "index": "index.html", "major": "18", "pages": 1148, "release": "18.6", "source_url": "https://ftp.postgresql.org/pub/source/v18.6/postgresql-18.6.tar.bz2", "svg_assets": 3, "source_mode": "en SGML built with pinned official archive", "source_sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "revision": "ee8d1a3612338fd9adf250730cb640fcc5233b5491337cc00a316a44e3a0b9f8", "evidence_kind": "English manual and source declarations", "source_sha256": "555610c24d53e4316da5b7d3fc25c279d96856d5e0e23ee308c328c5fa881d9f"}, "sources": [{"url": "/docs/18/app-psql.html#APP-PSQL-META-COMMANDS-CROSSTABVIEW", "file": "app-psql.html", "label": "18.6 English manual \u00b7 app-psql.html", "anchor": "APP-PSQL-META-COMMANDS-CROSSTABVIEW", "sha256": "fa2a1d39294b8854318e82e93f71272c645ed88150ecc2786c28902c3f32782c"}], "sections": [], "modifiers": [], "signature": "\\crosstabview [ colV [ colH [ colD [ sortcolH ] ] ] ]", "spellings": ["\\crosstabview"], "description": ["Executes the current query buffer (like \\g ) and shows the results in a crosstab grid. The query must return at least three columns. The output column identified by colV becomes a vertical header and the output column identified by colH becomes a horizontal header. colD identifies the output column to display within the grid. sortcolH identifies an optional sort column for the horizontal header."], "manual_html": "<div><dl class=\"variablelist\"><dt id=\"APP-PSQL-META-COMMANDS-CROSSTABVIEW\"><span class=\"term\"><code class=\"literal\">\\crosstabview [ <em class=\"replaceable\"><code>colV</code></em> [ <em class=\"replaceable\"><code>colH</code></em> [ <em class=\"replaceable\"><code>colD</code></em> [ <em class=\"replaceable\"><code>sortcolH</code></em> ] ] ] ]</code></span> </dt><dd>\n<p>Executes the current query buffer (like <code class=\"literal\">\\g</code>) and shows the results in a crosstab grid. The query must return at least three columns. The output column identified by <em class=\"replaceable\"><code>colV</code></em> becomes a vertical header and the output column identified by <em class=\"replaceable\"><code>colH</code></em> becomes a horizontal header. <em class=\"replaceable\"><code>colD</code></em> identifies the output column to display within the grid. <em class=\"replaceable\"><code>sortcolH</code></em> identifies an optional sort column for the horizontal header.</p>\n<p>Each column specification can be a column number (starting at 1) or a column name. The usual SQL case folding and quoting rules apply to column names. If omitted, <em class=\"replaceable\"><code>colV</code></em> is taken as column 1 and <em class=\"replaceable\"><code>colH</code></em> as column 2. <em class=\"replaceable\"><code>colH</code></em> must differ from <em class=\"replaceable\"><code>colV</code></em>. If <em class=\"replaceable\"><code>colD</code></em> is not specified, then there must be exactly three columns in the query result, and the column that is neither <em class=\"replaceable\"><code>colV</code></em> nor <em class=\"replaceable\"><code>colH</code></em> is taken to be <em class=\"replaceable\"><code>colD</code></em>.</p>\n<p>The vertical header, displayed as the leftmost column, contains the values found in column <em class=\"replaceable\"><code>colV</code></em>, in the same order as in the query results, but with duplicates removed.</p>\n<p>The horizontal header, displayed as the first row, contains the values found in column <em class=\"replaceable\"><code>colH</code></em>, with duplicates removed. By default, these appear in the same order as in the query results. But if the optional <em class=\"replaceable\"><code>sortcolH</code></em> argument is given, it identifies a column whose values must be integer numbers, and the values from <em class=\"replaceable\"><code>colH</code></em> will appear in the horizontal header sorted according to the corresponding <em class=\"replaceable\"><code>sortcolH</code></em> values.</p>\n<p>Inside the crosstab grid, for each distinct value <code class=\"literal\">x</code> of <em class=\"replaceable\"><code>colH</code></em> and each distinct value <code class=\"literal\">y</code> of <em class=\"replaceable\"><code>colV</code></em>, the cell located at the intersection <code class=\"literal\">(x,y)</code> contains the value of the <code class=\"literal\">colD</code> column in the query result row for which the value of <em class=\"replaceable\"><code>colH</code></em> is <code class=\"literal\">x</code> and the value of <em class=\"replaceable\"><code>colV</code></em> is <code class=\"literal\">y</code>. If there is no such row, the cell is empty. If there are multiple such rows, an error is reported.</p>\n</dd></dl></div>", "manual_path": "app-psql.html#APP-PSQL-META-COMMANDS-CROSSTABVIEW", "comparison_data": {"modifiers": [], "signature": "\\crosstabview [ colV [ colH [ colD [ sortcolH ] ] ] ]", "spellings": ["\\crosstabview"], "definition": "Executes the current query buffer (like \\g ) and shows the results in a crosstab grid. The query must return at least three columns. The output column identified by colV becomes a vertical header and the output column identified by colH becomes a horizontal header. colD identifies the output column to display within the grid. sortcolH identifies an optional sort column for the horizontal header. Each column specification can be a column number (starting at 1) or a column name. The usual SQL case folding and quoting rules apply to column names. If omitted, colV is taken as column 1 and colH as column 2. colH must differ from colV . If colD is not specified, then there must be exactly three columns in the query result, and the column that is neither colV nor colH is taken to be colD . The vertical header, displayed as the leftmost column, contains the values found in column colV , in the same order as in the query results, but with duplicates removed. The horizontal header, displayed as the first row, contains the values found in column colH , with duplicates removed. By default, these appear in the same order as in the query results. But if the optional sortcolH argument is given, it identifies a column whose values must be integer numbers, and the values from colH will appear in the horizontal header sorted according to the corresponding sortcolH values. Inside the crosstab grid, for each distinct value x of colH and each distinct value y of colV , the cell located at the intersection (x,y) contains the value of the colD column in the query result row for which the value of colH is x and the value of colV is y . If there is no such row, the cell is empty. If there are multiple such rows, an error is reported."}, "comparison_hash": "abf12a81cd555025f4fc46d4903e789a1cd12690887288a72af1c4eec8aefa6b"}, "comparison": {"left": "17", "right": "18", "status": "unchanged", "diff": ""}}