【发布时间】:2022-10-12 23:49:47
【问题描述】:
我已经使用电子表格达到了以该格式保存数据不再可行的地步。我已经在 Libreoffice Base 中创建了一个包含相关信息的表格,并且我正在尝试将一些查询放在一起。不幸的是,到目前为止,我尝试创建 SQL 查询时遇到了语法错误。可以预料,考虑到这对我来说都是新的。
这是我的示例表:
| TINYINT-A | TINYINT-B | NUMERIC-A | NUMERIC-B | BOOLEAN-A | BOOLEAN-B |
|---|---|---|---|---|---|
| 1 | 2 | 100 | 200 | 1 | 0 |
| 9 | 8 | 900 | 800 | 0 | 1 |
我有以下查询运行良好:
SELECT
SUM("TINYINT-A") AS "First Column",
SUM("TINYINT-B") AS "Second Column",
SUM("NUMERIC-A") AS "Third Column",
SUM("NUMERIC-B") AS "Fourth Column"
FROM
"Table-A"
输出将是:
| First Column | Second Column | Third Column | Fourth Column |
|---|---|---|---|
| 10 | 10 | 1000 | 1000 |
我想添加第五列,当布尔值等于 1 或 0 时,它总结了前四列之一中的行。作为单独的查询,我可以这样做:
SELECT
SUM("NUMERIC-A") AS "BOOLEAN-A-NUMERIC-A",
SUM("NUMERIC-B") AS "BOOLEAN-A-NUMERIC-B"
FROM
"Table-A"
WHERE
"BOOLEAN-A" = 1
预期输出:
| BOOLEAN-A-NUMERIC-A | BOOLEAN-A-NUMERIC-B |
|---|---|
| 100 | 200 |
但是,如果我尝试将两者放在一个查询中,以便将上面的输出附加到第一个输出的末尾,则会出现语法错误。这是我将两者结合起来的尝试:
SELECT
(
SELECT
SUM("TINYINT-A") AS "First Column",
SUM("TINYINT-B") AS "Second Column",
SUM("NUMERIC-A") AS "Third Column",
SUM("NUMERIC-B") AS "Fourth Column"
FROM
"Table-A"
),
(
SELECT
SUM("NUMERIC-A") AS "BOOLEAN-A-NUMERIC-A",
SUM("NUMERIC-B") AS "BOOLEAN-A-NUMERIC-B"
FROM
"Table-A"
WHERE
"BOOLEAN-A" = 1
)
FROM
"Table-A"
我忘记了我试图从中得出上述结构的哪个 SO 问题,但它显然不起作用,所以要么我没有正确理解它,要么我在某处遗漏了一个字符。
我还尝试完全按原样处理这两个单独的查询,并在它们之间添加一个新行,仅使用UNION。这会导致错误指出给定命令不是 SELECT 语句。我猜是因为这两个语句没有相同的输出结构。
我什至不确定 Base 中的命令是否相同,以及其他数据库(如 MySQL)之间的差异是否足够大。我确定他们是,而且我可能只是在做一些类似于尝试使用 HTML 标签/语法或其他东西执行 Python 的事情。
【问题讨论】:
-
LO Base 只是前端,不是引擎。例如,您使用的是 PostgreSQL,还是嵌入了 Firebird 或 HSQLDB 1.8 的嵌入式设置?
-
我懂了。它确实在屏幕底部显示
HSQLDB Embedded