一个 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 查询的多个输出的主要内容,如果未能解决你的问题,请参考以下文章