我是SQL的初学者。我正在使用Teradata。我们正在尝试将数据汇总在一起,以比较实际值与预测值。
这是我的代码:
select l.tid from listmybill as l.listmybill
inner join
Trainerdetails as t.Trainerdetails
on
l.tid=T.tid
如果在联合之前粘贴第一部分,则结果正确。与工会结束后的第二部分相同。
但是整个代码一起给出了错误: SELECT失败。 [3654]相应的选择列表表达式不兼容。
答案 0 :(得分:2)
您必须在两个部分(顶部和底部)以及相同的数据类型中具有相同数量的列。
据我所知,顶部查询中有9列,底部查询中有8列。
UPD :根据作者的修复,在以下查询中将null转换为空字符串。
答案 1 :(得分:1)
在牵引选择中你应该有相同数量的列和(在选择中数字似乎是8)但是 在你的联盟中,你不应该在第二个选择中使用别名
select
'Actuals' as fc_version,
A.tra_fiscal_year as fiscal_year,
A.tra_fiscal_week as fiscal_week,
A.tra_allocation_category_code as category,
A.tra_grand_pricing_sales_channel as grandparent_channel,
D.fc_prod_id,
coalesce(
case
when A.tra_ticket_product_code like 'A%' then 'Total'
else null
end,
case
when A.tra_grand_pricing_sales_channel = 'INMKT' Then 'In Market'
else 'All Other'
end )
as fc_sales_channel,
sum(A.tra_ticket_quantity) as units_sold,
from ((pd_plan_forecast_db.adm_rev_detail A
left outer join
pd_plan_forecast_db.adm_rev_prod_code_to_fc_id B
on (A.tra_ticket_product_code = B.product_code))
left outer join
pd_plan_forecast_db.adm_rev_ticket_code_to_fc_id C
on (A.tra_ticket_code = C.ticket_code)
left outer join
pd_plan_forecast_db.adm_rev_fc_prod_info D
on (coalesce(B.fc_prod_id, C.fc_prod_id) = D.fc_prod_id))
group by 1, 2, 3, 4, 5, 6, 7
union
select
fc_version
, fiscal_year
, fiscal_week
, category
, null
, fc_prod_id
, fc_sales_channel
, sum(units_sold)
from pd_plan_forecast_db.adm_rev_fc
where fiscal_year = 2017 and fiscal_week = 1
group by 1,2,3,4,5,6,7