0

3 つすべてを含む次のコードが必要です。列はproj1、日付に従ってそれぞれ 1 つの行にまとめられます。proj4proj5

ご覧のとおり、日付は似ていますが、異なるレコードに表示されています。

ここに画像の説明を入力

MYSQL クエリは次のとおりです。

select DISTINCT dates,proj1,proj4, proj5 from 
    (SELECT DISTINCT tc.dates AS dates , IF( tc.project_id = 1, tc.minutes, '' ) AS 'proj1',
    IF(tc.project_id = 5, tc.minutes, '') AS 'proj5', IF(tc.project_id = 4, tc.minutes, '') AS 'proj4'
FROM timecard AS tc where (tc.dates between '2013-04-01' AND '2013-04-05') ) as X

3つすべてが必要proj1proj4proj5レコードはすべて同じ行に表示され、クエリには5行しかありません

4

2 に答える 2

1

でグループ化し、空でない値を表示するためにdates使用できますmax()

select dates, max(proj1) as proj1, max(proj4) as proj4, max(proj5) as proj5
from timecard 
where tc.dates between '2013-04-01' AND '2013-04-05'
group by dates
于 2013-05-12T10:59:01.473 に答える
0

このSQLを試してください。

select dates,
        (case t1.proj1
        when t1.proj1 not null then t1.proj1 
        when t2.proj1 not null then t2.proj1
        when t3.proj1 not null then t3.proj1
        end) as "proj1",
        (case t1.proj2
        when t1.proj2 not null then t1.proj2 
        when t2.proj2 not null then t2.proj2
        when t3.proj2 not null then t3.proj2
        end) as "proj2",
        (case t1.proj3
        when t1.proj3 not null then t1.proj3 
        when t2.proj3 not null then t2.proj3
        when t3.proj3 not null then t3.proj3
        end) as "proj3"
from timecard t1,timecardt2,timecardt3
where t1.dates=t2.dates
and t2.dates=t3.dates
group by t1.dates
于 2013-05-12T11:17:42.887 に答える