требуется помощь с запросом SQL - PullRequest
0 голосов
/ 20 января 2010

У меня проблема, есть три таблицы

Table A 

ID        Employee    
1         1    
2         2
3         3


Table B
Id        EMployee        HoursWorked         HoursCode
1          1                 10               Basic Hours
2          1                 20               Holiday Pay
3          2                 10               Basic hours
4          2                 15               OverTime

Table C 
ID        Employee         Payments            PayCode
1           1                 100              Bonus
2           2                 150              Bonus
3           2                 250              Student Loan

Я хочу вывести записи из этой таблицы в минимальные строки, чтобы у меня была одна строка с надписью

id        Employee          Hour               HoursCode       Payments      PayCode
1          1                 10                Basic Hours     100           Bonus     
2          1                 20                Holiday Pay      null         null
3          2                 10                basic hours      150          Bonus 
4          2                 15                 OverTime        250          Student loan

Я потратил целую вечность, пытаясь получить его ... Но не получайте Ноль во 2-й строке, он получит 100 Бонус во второй строке для сотрудника 1

есть ли способ, которым я могу это сделать Пожалуйста, помогите

1 Ответ

3 голосов
/ 20 января 2010
WITH    bn AS
        (
        SELECT  *, ROW_NUMBER() OVER (PARTITION BY employee ORDER BY id) AS rn
        FROM    b
        ),
        cn AS
        (
        SELECT  *, ROW_NUMBER() OVER (PARTITION BY employee ORDER BY id) AS rn
        FROM    c
        )
SELECT  *
FROM    bn
FULL JOIN
        cn
ON      bn.employee = cn.employee
        AND bn.rn = cn.rn
ORDER BY
        COALESCE(bn.employee, cn.employee), COALESCE(bn.rn, cn.rn)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...