一个 SQL 查询的多个输出

Posted

技术标签:

【中文标题】一个 SQL 查询的多个输出【英文标题】:Multiple output with one SQL query 【发布时间】:2014-10-20 07:52:20 【问题描述】:

我正在尝试编写一个 SQL 查询,该查询将根据数据库中特定数量存在的次数输出多个变量。然后,此信息将用于图表。

数据库设置如下:

ID | quantity | etc..
---------------------
1  |   2      |
2  |   6      |
3  |   1      |
4  |   2      |
.
.
.

这是我的查询:

SELECT 
  COUNT(CASE WHEN quantity = 1) AS quantity1, 
  COUNT(CASE WHEN quantity = 2) AS quantity2
FROM orders

但我希望它像这样输出:

quantity1 | quantity2
---------------------
    1     |   2      |

相反,我收到以下错误消息:

提前致谢!

编辑:如果您想在我的数据库上测试您的代码,链接如下...

-链接已删除-

【问题讨论】:

你的意思可能是在数量上做一个group by 【参考方案1】:

这是另一种方法,也许有帮助:

SELECT SUM(CASE WHEN quantity = 1 THEN 1 ELSE 0 END) AS quantity_1,
       SUM(CASE WHEN quantity = 2 THEN 1 ELSE 0 END) AS quantity_2,
       SUM(CASE WHEN quantity = 3 THEN 1 ELSE 0 END) AS quantity_3,
       SUM(CASE WHEN quantity = 4 THEN 1 ELSE 0 END) AS quantity_4,
       SUM(CASE WHEN quantity = 5 THEN 1 ELSE 0 END) AS quantity_5,
       SUM(CASE WHEN quantity = 6 THEN 1 ELSE 0 END) AS quantity_6,
       SUM(CASE WHEN quantity > 6 THEN 1 ELSE 0 END) AS quantity_more_than_6
  FROM orders

这是一个针对 MS Access 的特殊查询:

SELECT SUM(SWITCH(quantity = 1, 1)) AS quantity_1,
       SUM(SWITCH(quantity = 2, 1)) AS quantity_2,
       SUM(SWITCH(quantity = 3, 1)) AS quantity_3,
       SUM(SWITCH(quantity = 4, 1)) AS quantity_4,
       SUM(SWITCH(quantity = 5, 1)) AS quantity_5,
       SUM(SWITCH(quantity = 6, 1)) AS quantity_6,
       SUM(SWITCH(quantity > 6, 1)) AS quantity_more_than_6
  FROM orders

【讨论】:

我得到与 OP 中相同的错误,但看起来它在正确的轨道上。 IErrorInfo.GetDescription 失败....这是什么意思?? 我已将数据库文件添加到 OP 看起来您使用的是 MS Access,对吗?我更新了我对那个案例的回答。 是是是是!!!!我不知道有什么不同。非常感谢!因此,为了将来参考,您是如何/如何做到这一点的? 我刚刚搜索了“ms access sql case syntax”,第一个命中点指向***.com/questions/14920116/…【参考方案2】:

使用 GROUP BY 子句,例如:

SELECT quantity, COUNT(*) AS num
FROM Orders
GROUP BY quantity
HAVING COUNT(*) > 6;

编辑:您可以添加 HAVING 子句

【讨论】:

这几乎是完美的!我计划在查询中做的是找到 = 1、2、3、4、5、6 和 6 以上的数量。我怎样才能做到这一点? 现在显示当计数> 6时。我需要当数量为 1,2,3,4,5,6 AND 当数量 > 6 时。 我已将数据库文件添加到 OP

以上是关于一个 SQL 查询的多个输出的主要内容,如果未能解决你的问题,请参考以下文章

在 postgresql 中输出多个 sql 查询的结果

sql server如何用print语句输出查询结果

使用 Shell 脚本运行 SQL 查询并返回 CSV 格式的输出

SQL CASE THEN 语句,其中 ID 具有多个值

[Hive]格式化输出 Hive 查询结果到 Excel

如何以简化格式输出 SQL 数组?