合并不同 SQL 查询的列

Merge columns of distinct SQL queries

提问人:Neil DeGrasse Tyson 提问时间:12/5/2022 最后编辑:marc_sNeil DeGrasse Tyson 更新时间:12/12/2022 访问量:28

问:

我有三个不同的SQL查询需要合并。(这里显示的只是两个)。

我试图在给定的括号示例中的 FROM 子句中放置一个查询。

我正在尝试列出用户的订单的最后日期,同时我想列出订单数量,它会起作用,但由于我收到错误:GROUP BY

子查询必须只返回一列

并且由于以下原因而不起作用UNION

每个 UNION 查询必须具有相同数量的列

所以问题很简单:我只想将两个查询的结果合并到一个结果集中。

SELECT DISTINCT order.ordner_nr,name,oDate,             

(
SELECT  
   order_nr, COUNT(*) as ammountOrders
FROM
     order
GROUP BY    -- Error occurs 
   order_nr
)



FROM user
INNER JOIN order
using (order_nr)
where (order_nr, oDate) in  
    (select order_nr, max(oDate)
     from order group by order_nr)

我尝试了上面所说的 UNION 和各种各样的事情,我不知道该怎么做,我也是 SQL 的菜鸟

SQL 数据库 异常

评论

0赞 Thorsten Kettner 12/5/2022
您希望在结果行中显示什么内容?用户名、用户的订单总数、用户的最后订单日期和编号?你的DBMS是什么?(始终使用 DBMS 标记 SQL 请求,以获得适合您的答案。
0赞 Thorsten Kettner 12/5/2022
如果您是 SQL 的初学者,CTE(子句)可能会有所帮助。在一个 CTE 中选择所有用户的第一个订单,在另一个 CTE 中选择所有用户的订单计数。然后,在主查询中,从用户中选择并将两个 CTE 联接到它们。WITH

答:

0赞 nbk 12/5/2022 #1

子查询只能返回标量值,例如您的计数,请参阅下面的查询,

您需要加入查询的更多列

SELECT DISTINCT order.ordner_nr,name,oDate,             
(
SELECT  
   COUNT(*) 
FROM
     order o1
WHERE
   o1.order_nr = order.order_nr
) as ammountOrders
FROM user
INNER JOIN order
using (order_nr)
where (order_nr, oDate) in  
    (select order_nr, max(oDate)
     from order group by order_nr)

评论

0赞 Neil DeGrasse Tyson 12/5/2022
但这算上每个订单号......有不同的多个订单号,我需要计算每个订单号
0赞 nbk 12/5/2022
你能提供一个dbfidlle吗,如果不看到结构和数据,就很难理解
0赞 Neil DeGrasse Tyson 12/5/2022
对不起,不知道这是什么......我只需要知道如何将 2 个查询的结果放入一个表中即可
0赞 nbk 12/5/2022
转到页面 dbfiddle.uk/btGcOH30 并添加带有数据的 yor 表,因为我不知道您的结构,我无法确切地告诉您该怎么做。通常,创建一个 select 查询,为您提供所有想要的行,创建一个 Count(*) 而不是 coluumns,并更改 where 子句以与外部 from 子句链接