我有一个CTE,它返回以下几个连接的结果:
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group
android:id="@+id/nav_header"
android:checkableBehavior="single">
<item
android:id="@+id/nav_home"
android:checked="true"
android:icon="@drawable/ic_home_black_24dp"
android:title="Home" />
<item
android:id="@+id/nav_search"
android:icon="@drawable/ic_search_black"
android:title="Search Location" />
<item
android:id="@+id/nav_fav"
android:icon="@drawable/ic_favorite"
android:title="Favorites" />
<item
android:id="@+id/nav_recent"
android:icon="@drawable/ic_nav_route"
android:title="Recent Location" />
<item
android:id="@+id/nav_route"
android:icon="@drawable/ic_place"
android:title="Route" />
</group>
<item
android:id="@+id/navigation_subheader"
android:title="Others">
<menu>
<item
android:id="@+id/nav_settings"
android:checkable="true"
android:icon="@drawable/ic_settings"
android:title="Settings" />
<item
android:checkable="true"
android:id="@+id/nav_about"
android:icon="@android:drawable/ic_menu_send"
android:title="About" />
</menu>
</item>
</menu>
基本上他们按城市和岛屿返回一些值,我想按照以下规则加入一行中某些岛屿的值:
Madeira = Ilha de Porto Santo + Ilha da Madeira
Açores=
city Value1 Value2
Aveiro 83 1624
Beja 6 83
Braga 70 1751
Bragança 8 165
Castelo Branco 7 206
Coimbra 32 573
Évora 14 173
Faro 181 3284
Guarda 2 106
Ilha da Graciosa 39 92
Ilha da Madeira 520 3339
Ilha das Flores 53 154
Ilha de Porto Santo 46 107
Ilha de Santa Maria 114 140
Ilha de São Jorge 31 116
Ilha de São Miguel 306 2582
Ilha do Corvo 7 12
Ilha do Faial 90 217
Ilha do Pico 123 167
Ilha Terceira 205 493
Leiria 82 1167
Lisboa 301 8833
Portalegre 11 201
Porto 333 5966
Santarém 39 973
Setúbal 90 2229
Viana do Castelo 24 435
Vila Real 30 473
Viseu 40 640
输出应为:
Ilha da Graciosa
Ilha das Flores
Ilha de Santa Maria
Ilha de São Jorge
Ilha de São Miguel
Ilha do Corvo
Ilha do Faial
Ilha do Pico
Ilha Terceira
我使用FOR XML PATH尝试基于相同帖子的几个想法,但我无法重现期望结果。
我没有可以在GROUP中使用的任何ID,因为Island有自己的ID 任何人都可以帮助我吗?
谢谢
答案 0 :(得分:1)
您可以使用case
:
select (case when city in ('Ilha de Porto Santo', 'Ilha da Madeira')
then 'Madeira'
when city in ('Ilha da Graciosa', 'Ilha das Flores', 'Ilha de Santa Maria',
'Ilha de São Jorge', 'Ilha de São Miguel', 'Ilha do Corvo',
'Ilha do Faial', 'Ilha do Pico', 'Ilha Terceira')
then 'Açores'
else city
end) as city
sum(Value1) as value1, sum(Value2) as value2
from cte
group by (case when city in ('Ilha de Porto Santo', 'Ilha da Madeira')
then 'Madeira'
when city in ('Ilha da Graciosa', 'Ilha das Flores', 'Ilha de Santa Maria',
'Ilha de São Jorge', 'Ilha de São Miguel', 'Ilha do Corvo',
'Ilha do Faial', 'Ilha do Pico', 'Ilha Terceira')
then 'Açores'
else city
end);
嗯,考虑到这一点,你应该定义一个具有&#34;详细城市的参考表&#34;以及&#34;报告城市&#34;。这将使得将来更容易维护代码 - 关于组合内容的规则将在表格中(易于更改)而不是代码中(更难以更改)。