0

選択クエリで結合しようとしている 2 つのテーブルがあります。

表 1: ストア、primary_key(id,store_num)

store_id  store_num     due_date     manager_id
    1       100        06-30-2024      user1
    2       108        06-30-2018      user2
    3       109        13-31-2014      user3

表 2: 部門、ステータス (A-適用済み、p-保留中)

store_id  store_num     dept_num      status
    1       100           201           A
    1       100           202           A
    1       100           203           P
    1       100           204           A
    1       100           205           P
    1       100           206           A

store_id、store_num、due_date、manager_id、Applied count、pending count を選択する予定です。結果はこんな感じです。

store_id  store_num     due_date     manager_id  applied_count    pending_count
    1       100        06-30-2024      user1          4               2

私はそれを試してみましたが、参加して複数の行で取得できる場所に到達しましたが、うまくいきません。カウントを取得する方法を教えてください

select 
   store.store_id, 
   store.store_num, 
   store.due_date, 
   store.manager_id, 
   dept.status 
from store as store 
inner join department as dept on store.store_id = dept.store_id
                             and store.store_num = dept.store_num
4

1 に答える 1

2

クエリは途中で完了しました。異なる列の値を取得するには、集計を行う必要があります。次に示すように、これは条件付き集計です。

select s.store_id, s.store_num, s.due_date, s.manager_id,
       sum(case when d.status = 'A' then 1 else 0 end) as Active_Count,
       sum(case when d.status = 'P' then 1 else 0 end) as Pending_Count
from store s inner join
     department as dept
     on s.store_id = d.store_id and s.store_num = d.store_num
group by store.store_id, store.store_num, store.due_date, store.manager_id;

表現:

       sum(case when d.status = 'A' then 1 else 0 end) as Active_Count,

の行を数えていますstatus = 'A'。そのような行に値を割り当て、1その値を合計することでこれを行います。

于 2013-06-26T03:15:46.673 に答える