【问题标题】:How do I combine these tables? [closed]如何组合这些表? [关闭]
【发布时间】:2021-10-01 07:17:30
【问题描述】:

我的目标是制作一个 5 x 5 的表格,如下所示:

State MostRE MostNRE LeastRE LeastNRE
WA 4499698 blank blank blank
TX blank 91590135 blank blank
DC blank blank 4780 blank
DC blank blank blank 438130

我已经分别找到了查询:

select re.state, max(TotalrenewableE) as Most_RE
from #temp_RE as re
Inner join(
select max(TotalRenewableE) TotalRE
from #temp_RE)MaxTRE
On MaxTRE.TotalRE = RE.TotalRenewableE
Group by re.state 


select nre.state, max(TotalNonrenewableE) as Most_NRE
from #temp_NonRE as nre
Inner join(
select max(totalnonrenewablee) TotalNRE
from #temp_NonRE)MaxTNRE
On MaxTNRE.TotalNRE = NRE.TotalNonrenewableE
Group by nre.state



select re.state, min(TotalrenewableE) as Least_RE
from #temp_RE as re
Inner join(
select min(TotalRenewableE) TotalRE
from #temp_RE)MinTRE
On MinTRE.TotalRE = RE.TotalRenewableE
Group by re.state 



select nre.state, min(TotalNonrenewableE) as Least_NRE
from #temp_NonRE as nre
Inner join(
select min(totalnonrenewablee) TotalNRE
from #temp_NonRE)MinTNRE
On MinTNRE.TotalNRE = NRE.TotalNonrenewableE
Group by nre.state

我试过了:

select nre.state, 
min(TotalNonrenewableE) as Least_NRE,
min(TotalRenewableE) as Least_RE,
max(TotalNonrenewableE) as Most_NRE, 
max(TotalRenewableE) as Most_RE,
from #temp_NonRE as nre, #temp_RE as re
Inner Join(
select min(totalnonrenewablee) TotalNRE
from #temp_NonRE)MinTNRE
On MinTNRE.TotalNRE = #temp_NonRE.TotalNonrenewableE
Inner Join(
select min(TotalRenewableE) TotalRE
from #temp_RE)MinTRE
On MinTRE.TotalRE = RE.TotalRenewableE
Inner Join(
select max(totalnonrenewablee) TotalNRE
from #temp_NonRE)MaxTNRE
On MaxTNRE.TotalNRE = #temp_NonRE.TotalNonrenewableE
Inner Join(
select max(TotalRenewableE) TotalRE
from #temp_RE)MaxTRE
On MaxTRE.TotalRE = RE.TotalRenewableE
Where nre.State = re.State
Group by nre.state

但它给了我这个错误:

无法绑定多部分标识符“#temp_NonRE.TotalNonrenewableE”。

我只是不知道如何将它们组合成上面的表格。

感谢您的辛勤工作

【问题讨论】:

  • 你不知道是哪一行导致了错误吗?
  • MinTNRE.TotalNRE = #temp_NonRE.TotalNonrenewableE,您为临时表指定了别名,因此现在只能由该别名引用。您为另一个临时表执行此操作,所以我投票以错字关闭
  • 另外,你不应该使用逗号分隔的连接语法,而应该使用join...on。而且你绝对不应该混合这两种形式
  • 我不知道错误来自哪里。我认为这是因为每一行都没有填满每一列,但我不知道如何说如果没有值则为空白。但我再次不确定这是否是问题

标签: mysql sql join


【解决方案1】:

再次联合所有并分组

select state, max(Most_RE) Most_RE, max(Most_NRE) Most_NRE, max(LeastRE) LeastRE, max(LeastNRE) LeastNRE  
from (
    select re.state, max(TotalrenewableE) as Most_RE, null Most_NRE, null LeastRE, null LeastNRE
    from #temp_RE as re
    Inner join(
    select max(TotalRenewableE) TotalRE
    from #temp_RE)MaxTRE
    On MaxTRE.TotalRE = RE.TotalRenewableE
    Group by re.state 
    
    union all
    
    select nre.state, null, max(TotalNonrenewableE) as Most_NRE, null, null
    from #temp_NonRE as nre
    Inner join(
    select max(totalnonrenewablee) TotalNRE
    from #temp_NonRE)MaxTNRE
    On MaxTNRE.TotalNRE = NRE.TotalNonrenewableE
    Group by nre.state
    
    ...
)
group by state

【讨论】:

  • 这适用于一些小的改动;在 first from 中添加 #temp_RE 作为 re,将子查询命名为 x。添加 where x.state = re.state
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-21
  • 2021-03-26
  • 2021-03-23
  • 1970-01-01
  • 2022-11-01
  • 2015-02-23
相关资源
最近更新 更多