0

行の値から列が必要です。

私は2つのテーブルを持っています。

表 1 : working_dayすべての稼働日のリストが含まれています。

date
--------
2013-03-30
2013-03-29
2013-03-28

表 2 : エントリには、各従業員の出勤時間と退勤時間が含まれます。

id  In  Out  Date
1   9   0    2013-03-30
2   8   0    2013-03-30
3   7   0    2013-03-30
1   8   18   2013-03-29
2   9   16   2013-03-29
3   6   20   2013-03-29
4   12  15   2013-03-29

期待される出力:

ID  29-03-2013_IN  29-03-2013_Out   30-03-2013_In
1    8                    18          9
2    9                    16          8
3    6                    20          7
4    12                   15          0

試した:

SELECT id, 
Case condition1 for 29_in,  // I don't know which condition suite here.
Case condition1 for 29_out,
Case condition1 for 30_in
FROM entry
WHERE DATE
IN (
SELECT * 
FROM (
SELECT DATE
FROM working_day
ORDER BY DATE DESC 
LIMIT 0 , 2
)a
)
4

2 に答える 2

2

あなたはそのようなことを試すことができます:

select 
   e.id,
   (SELECT `in` FROM entry WHERE id = e.id AND date = '2013-03-30') as '2013-03-30_in',
   (SELECT `in` FROM entry WHERE id = e.id AND date = '2013-03-29') as '2013-03-29_in',
   (SELECT `out` FROM entry WHERE id = e.id AND date = '2013-03-29') as '2013-03-29_out'
from entry e
group by e.id;

ここにデモがあります

于 2013-03-30T06:31:37.000 に答える
0

IMO SQLではなくアプリケーションでこれを行う必要があります

于 2013-03-30T06:40:32.800 に答える