我有一个简单的表格,里面有一批学生的数据和他们在不同年份的分数(数据可能不现实,但这只是一个例子)。
Name Dept HOD Year1 Year2 Year3 Year4
Sam Science Christie 76.23 34.65 45.67 23.45
Mike Science Christie 57.987 26.98 43.98 78.34
Bonny Maths Christie 64.87 67.23 34.09 12.87
Ben English Simon 43.98 54.76 55.87 76.87
现在的要求是,以2015年为参照点,如果用户进入2018年,希望获得佳士得管理的科学部门的sam数据,那么第3列(即2018-2015年)的值预计适用于所有这些条件。
For example -
[case
when Name='Sam' and Dept='Science' and HOD='Christie' then Year*
when Name='Bonny' and Dept='Maths' and HOD='Christie' then Year*
when Name='Ben' and Dept='English' and HOD='Simon' then Year*
end]
我已经试过sql了-
select Value from (
select concat('Year', abs(2018-2015)) as Value from Class where
Name='Sam' and Dept='Science' and HOD='Christie')
所以,当我在上面的查询中硬编码year3而不是公式时,它工作得很好。当我单独触发计算值时,它给出的是输出。从类别中选择concat('年份',abs(2018-2015)作为值
但是当我集成这两者时,我的查询只给出一个字符串year3。而我想为该列选择值。
可能是我做错了什么,我不确定,但欢迎任何建议来解决这个问题。
我看到一篇帖子,建议使用coalesce()动态调用列。所以我也试过了-
select coalesce(Value, T.period,0) as Value from (
select concat('Year',(abs(2018-2015)))as period, Name, Dept, HOD from
Class where Name='Sam' and Dept='Science' and HOD='Christie') as T
where T.Name='Sam' and T.Dept='Science' and T.HOD='Christie'
但我收到了错误-
Error while compiling statement: FAILED: SemanticException [Error 10004]:
line 1:16 Invalid table alias or column reference 'Value': (possible
column names are: period, Name, Dept, HOD)
1条答案
按热度按时间jogvjijk1#
这就是你想要的吗?