0

私は次のようなデータの表を持っています:

t1
____________________________________________________
resources          | companyName | Response | Score 
David, Matt        |  companyA   |  YES     |   5
Matt               |  compqanyB  |  NO      |   8
Kyle, Kyle, David  |  companyC   |  YES     |   2

ご覧のとおり、resourcesはカンマ区切りの文字列です。また、のすべてのメンバーresourcesが一意である必要はありません(行3を参照)。

私は、GROUP BYDISTINCTメンバーが任意のリストで利用できるようにしたいです。他のすべての列が集約されます。

意図した結果:

query
______________________________________________________________________________
resources     |  companyName        |    Response         | Score
David         | *agregated result*  | *agregated result*  | *agregated result*  
Matt          | *agregated result*  | *agregated result*  | *agregated result*  
Kyle          | *agregated result*  | *agregated result*  | *agregated result*  

編集:

別の可能性:

query
____________________________________________________
resources          | companyName | Response | Score 
David              |  companyA   |  YES     |   5
Matt               |  companyA   |  YES     |   5
Matt               |  compqanyB  |  NO      |   8
Kyle               |  companyC   |  YES     |   2
David              |  companyC   |  YES     |   2
4

1 に答える 1

3

個々の名前のリソースのテーブルがあると仮定します。その場合、次のクエリでやりたいことができます。

select r.name, <other aggregated results>
from t1 join
     Resources r
     on concat(', ', t1.resources, ', ') like concat(', %', r.name, ', %')
group by r.name

リソースのテーブルがない場合は、おそらくそうする必要があります。このようなものをコンマ区切りのリストに格納することは、一般的に悪い考えです。データが正規化されておらず、スペルミスが発生する場合は特に悪い考えです。

于 2012-10-25T14:52:20.330 に答える