我有两个视图查询:
第一种观点:
SELECT
t1.entity_id, t1.entity_name,
t2.order1, t2.order2, t2.order3, t2.order4, t3.date, t2.score
FROM table1 t1
LEFT JOIN table2 t2 ON t1.entity_id = t2.entity_id
LEFT JOIN table3 t3 ON t2.code = t3.code
WHERE
t1.entity_id = 1
第二种观点:
SELECT
t1.entity_id, t1.entity_name,
t2.order1, t2.order2, t2.order3, t2.order4, max(t3.date) as 'date'
FROM table1 t1
LEFT JOIN table2 t2 ON t1.entity_id = t2.entity_id
LEFT JOIN table3 t3 ON t2.code = t3.code
WHERE
t1.entity_id = 1
GROUP BY
t1.entity_id, t1.entity_name, t2.order4, t2.order3, t2.order2, t2.order1
我遇到的问题是,当我尝试选择具有最大日期的最终分数时,会出现错误:
列“dbo.t2.score”在选择列表中无效,因为它既不包含在聚合函数中,也不包含在 GROUP BY 子句中。
我坚持要获得最新日期的分数,而不使用任何总分。我已经尝试了很多方法,但我无法弄清楚获得最新日期
的分数如何在这种情况下获得分数(在相同的情况下检查 order1 到 order4 之后):
- 当日期不同时,选择最新的分数
- 当日期相同时,选择最高分
有可能这样做吗?
在上述条件下, 我怎样才能得到entity_id
and ?score
更新
view1 的结果:
entity_id | entity_name | order1 | order2 | order3 | order4 | date | score
================================================================================
1 | entity 1 | aaa | rrr | eee | NULL | 2012-12-15 | 2
1 | entity 1 | aaa | rrr | eee | NULL | 2012-11-01 | 5.3
1 | entity 1 | bbb | sss | ttt | ggg | 2012-11-16 | 1.5
1 | entity 1 | ccc | sss | xxx | NULL | 2012-12-15 | 2.3
view2的结果:
entity_id | entity_name | order1 | order2 | order3 | order4 | date
========================================================================
1 | entity 1 | aaa | rrr | eee | NULL | 2012-12-15
1 | entity 1 | bbb | sss | ttt | ggg | 2012-11-16
1 | entity 1 | ccc | sss | xxx | NULL | 2012-12-15
我想要的结果:
entity_id | entity_name | order1 | order2 | order3 | order4 | date | score
================================================================================
1 | entity 1 | aaa | rrr | eee | NULL | 2012-12-15 | 2
1 | entity 1 | bbb | sss | ttt | ggg | 2012-11-16 | 1.5
1 | entity 1 | ccc | sss | xxx | NULL | 2012-12-15 | 2.3
我已经解决了这个问题。