如果有两张table,我需要一个购物奖励的分组摘要。更多的项目意味着更多的奖励。
选项卡篮
| 标识符|姓名|购物_no|类型|
| - -|- -|- -|- -|
| 第001章|麦克|第00001号|A级|
| 002年|麦克|第00001号|A级|
| 003年|麦克|第00001号|A级|
| 004年|汤姆|第00002号|B|
| 005年|汤姆|第00002号|B|
| 006年|东尼|第00003号|A级|
| 007年|海因茨|第00004号|A级|
tab_奖励
| 项目|授与|类型_奖励|
| - -|- -|- -|
| 一个|0.05分|A级|
| 2个|0.50分|A级|
| 三个|0.90分|A级|
| 四个|一点整|A级|
| 一个|零点一五分|B|
| 2个|0.70分|B|
| 三个|1.10分|B|
| 四个|一点三十分|B|
我需要下表作为结果。
| 授与|项目|购物_no|类型_奖励|
| - -|- -|- -|- -|
| 0.90 |三个|第00001号|A级|
| 0.70 |2个|第00002号|B|
| 0.05 |一个|第00003号|A级|
| 0.05 |一个|第00004号|A级|
我的解决方案尝试。我每次只得到null作为结果的奖励(否则结果)或错误“sql 0811结果选择多行”。我很高兴任何帮助,谢谢!
SELECT award,
items,
shopping_no,
type_award
FROM tab_basket t
LEFT OUTER JOIN tab_award u ON t.TYPE = u.type_award
AND CASE WHEN (SELECT COUNT(shopping_no)
FROM tab_basket m
WHERE t.id = m.id
AND t.name = m.name
AND t.shopping_no = m.shopping_no
AND t.TYPE = u.TYPE
GROUP BY shopping_no ) = '1' THEN '1'
case WHEN (SELECT COUNT(shopping_no)
FROM tab_basket m
WHERE t.id = m.id
AND t.name = m.name
AND t.shopping_no = m.shopping_no
AND t.TYPE = u.TYPE
GROUP BY shopping_no ) = '2' THEN '2'
CASE WHEN (SELECT COUNT(shopping_no)
FROM tab_basket m
WHERE t.id = m.id
AND t.name = m.name
AND t.shopping_no = m.shopping_no
AND t.TYPE = u.TYPE
GROUP BY shopping_no ) = '3' THEN '3'
CASE WHEN (SELECT COUNT(shopping_no)
FROM tab_basket m
WHERE t.id = m.id
AND t.name = m.name
AND t.shopping_no = m.shopping_no
AND t.TYPE = u.TYPE
GROUP BY shopping_no ) = '4' THEN '4'
ELSE 'no_price'
END = u.award
1条答案
按热度按时间mutmk8jj1#
您可以先聚合tab_basket表,然后将其与tab_award表连接-