我尝试过使用列别名,列号,使用组中的case语句,没有运气。这是interbase的缺点吗?
select
case
when vp.preferredvendor = 'Y' then vp.name
else 'Misc'
end as vendor,
sum(sa.totalfare)
from
SalesActivity(1,1,2, '2014-01-01', '2014-02-01') sa
join
booking bk on bk.bookingno = sa.bookingno
join
profile vp on bk.vendor_linkno = vp.profileno
group by
vendor
答案 0 :(得分:1)
重复case
:
select (case when vp.preferredvendor = 'Y' then vp.name
else 'Misc'
end) as vendor,
sum(sa.totalfare)
from SalesActivity(1,1,2, '2014-01-01', '2014-02-01') sa join
booking bk
on bk.bookingno = sa.bookingno join
profile vp
on bk.vendor_linkno = vp.profileno
group by (case when vp.preferredvendor = 'Y' then vp.name
else 'Misc'
end);
作为旁注,一些数据库确实允许在group by
子句中使用列别名,但绝对不是所有这些都是标准所必需的。
答案 1 :(得分:0)
我对Interbase不熟悉,但考虑到你尝试过的失败,下一步就是尝试子查询:
select vendor, sum(totalfare)
from (
select
case
when vp.preferredvendor = 'Y' then vp.name
else 'Misc'
end as vendor,
sa.totalfare
from
SalesActivity(1,1,2, '2014-01-01', '2014-02-01') sa
join
booking bk on bk.bookingno = sa.bookingno
join
profile vp on bk.vendor_linkno = vp.profileno)
group by vendor