2

クエリが分からなくて困っています。私は3つのテーブルを持っています。テーブルからデータを取得して 1 行に表示する方法を見つけましたが、テーブルの 1 つでデータ設定が奇妙です。すべてのテーブルはレポート ID を共有します。

表1

RID AllOtherData
1    Stuff
2    Stuff
3    Stuff

表 2

RID Description
1   Descript
2   Descript
3   Descript

表3は私が問題を抱えている場所です

RID Item Code
1     1   RWA
1     2   ABA
1     3   BBC
2     1   BBC
2     2   NULL
2     3   NUll
ETC*

私が求めているのは、RID, ALLotherstuf.T1, descript.t2, code.t3 as item1 code, code.t3 as item2 code, code.t3 as item3コードを取得するためにクエリを実行する方法です。

誰かが私を指摘したり、これがどのような種類のクエリであるか、さらには可能であるかの例を教えてくれれば、私は大いに義務付けられます.

4

3 に答える 3

1

これはあなたが探しているものですか?これは、@Gordonの以前の応答から修正されました。

select t1.RID, t1.AllOtherData, t2.Description,
       max(case when t3.item = 1 then t3.code end) as item1code,
       max(case when t3.item = 2 then t3.code end) as item2code,
       max(case when t3.item = 3 then t3.code end) as item3code
from table1 t1 join
     table2 t2 on 
     t1.RID = t2.RID join
     table3 t3 on
     t1.RID = t3.RID
group by t1.RID, t1.AllOtherData, t2.Description

そしてSQLフィドル

于 2013-01-10T16:41:47.503 に答える
0

PIVOTSQL Serverを使用している場合は、次の関数も使用できます。

select *
from
(
  select t1.RID, 
    t1.AllOtherData, 
    t2.Description,
    t3.item,
    t3.code
  from table1 t1 
  inner join table2 t2 
    on t1.RID = t2.RID 
  inner join table3 t3 
    on t1.RID = t3.RID
) src
pivot
(
  max(code)
  for item in ([1], [2], [3])
) piv

SQL FiddlewithDemoを参照してください

于 2013-01-10T17:17:53.507 に答える
0

列をピボットします。まず、すべてのテーブルを結合します。これにより、別々の行にコードが生成されます。それらを 1 行にまとめるには、 を使用しますgroup by。以下は、どのデータベースでも機能します。

select t1.RID, t1.ALLotherstuf, t2.descript,
       max(case when t3.item = 1 then t3.code end) as item1code,
       max(case when t3.item = 2 then t3.code end) as item2code,
       max(case when t3.item = 3 then t3.code end) as item3code
      code.t3 as item1 code, code.t3 as item2 code, code.t3 as item3
from t1 join
     t2 o
     on t1.RID = t2.RID join
     t3
     on t1.RID = t3.RID
group by t1.RID, t1.ALLotherstuf, t2.descript
于 2013-01-10T16:32:24.380 に答える