首页 > 解决方案 > 通过嵌套组合查询

问题描述

通过下面的查询,我从“PRICING”表中获取价格……我必须创建用户 ID,以便它可以用来加入标题为“DEMORAPHICS”的第二个表我想要的是“总成本” ” 我从以下查询中获得

Select concat(b.ID_Symbol, ' ', b.ID_Number) AS 'UserID’,
SUM(a.Price) AS 'Total Cost'
From Pricing        a 
Left Join User_Info b On a.unique = B.unique

我有的:

USER ID Total Cost
A22     100
B33     200
C44     300

…并将其附加到以下查询

Select
UserID
Name,
Address,
Phone
FROM Demographics

我想要的是:

USER ID  Name       Address      Phone      Total Cost
A22      John Doe   777 5th St   555-5555   100
B33      Sammy Singh222 3rd Blvd 555-5000   200
C44      Melissa Doe555 1st ave  555-5500   300

如果这甚至是正确的方法,我不确定如何以及在哪里以及如何嵌套查询......有点帮助?

标签: sqlnested

解决方案


编辑:我注意到的另一件事是CONCAT函数的使用。如果您使用的是 Oracle,那么它是不正确的,因为CONCAT它只接受 2 个值。

您也可以使用创建 CTE 的冗长方法来做到这一点。您尚未标记 DB,但这是一个通用解决方案:

with cte1 as
(
  Select
    b.ID_Symbol || ' ' || b.ID_Number AS 'UserID',
    SUM(a.Price) AS 'Total Cost'
  From Pricing a 
  Left Join User_Info b On a.unique = B.unique
  group by b.ID_Symbol, b.ID_Number
)
,cte2 as
(
  Select UserID, Name, Address, Phone
  FROM Demographics
)
select b.UserID, b.Name, b.Address, b.Phone, a."Total Cost"
from cte1 a
join cte2 b on a.UserID=b.UserID

推荐阅读