【发布时间】:2020-08-28 15:57:34
【问题描述】:
我有三个结构复杂的表。我这样查询他们:
select sart.season, ost.art, ost.asize, sum(ost.kol) as sum_kol, gr.shopid
from firm.e_osttek_online ost
inner join firm.s_art sart on ost.art = sart.art
join firm.tdm_map_new_shop_group gr on
(ost.id_shop = gr.shopid and
gr.season_out = case when gr.season_out != ' ' then sart.season end
)
where gr.s_group = '89901'
group by sart.season, gr.shopid, ost.art, ost.asize having sum(ost.kol) > 0
order by ost.art, ost.asize;
gr.season_out 可以包含空格。这意味着如果有空格,请不要按照我在案例中指定的第二个条件使用连接。它运作良好。现在表 gr 改变了。唯一的变化是 season_out 字段可能包含一个季节或一个空格或由逗号分隔的几个季节的字符串(之前它是一个季节或只有一个空格)。 sart.season 只能包含一个季节并且不能包含空格。现在如何重写join,保留空间逻辑(很关键)?我知道结构很糟糕,我不应该在一个 gr 领域里放几个赛季,但我没有权力控制它,这不是我的设计。我只需要查询。
gr:
SEASON S_GROUP SHOPID
|--------------------------|----------------------------|-------|
| Winter | DescriptionW | A |
|--------------------------|----------------------------|-------|
| Winter, Allweather | Description2 | B |
|--------------------------|----------------------------|-------|
| | DescriptionS | C |
|--------------------------|----------------------------|-------|
sart:
SEASON SOMETHINGELSE ART
|--------------------------|----------------------------|---------------|
| Winter | SomethingElseW | 1 |
|--------------------------|----------------------------|---------------|
| Allweather | SomethingElseA | 2 |
|--------------------------|----------------------------|---------------|
| Fall | SomethingElseF | 3 |
|--------------------------|----------------------------|---------------|
ost:
ART ASIZE ID_SHOP KOL
|--------------------------|----------------------------|------------------|----|
| 1 | Stuff1 | A | 0 |
|--------------------------|----------------------------|------------------|----|
| 2 | Stuff2 | B | 20 |
|--------------------------|----------------------------|------------------|----|
| 3 | Stuff3 | C | 30 |
|--------------------------|----------------------------|------------------|----|
【问题讨论】:
-
请提供样本数据和期望的结果。
-
只是想显示更真实的查询,因为该线程中的“LIKE”是一个很好的答案,但不考虑空格。没有 soaces 会更容易,但我必须注意它们
-
我在这里添加了结构更好的名称
标签: sql database oracle join oracle11g