[前][次][番号順一覧][スレッド一覧]

mysql:9495

From: UNO Shintaro <UNO Shintaro <uno@xxxxxxxxxx>>
Date: Tue, 01 Jun 2004 00:38:42 +0900
Subject: [mysql 09495] Re: 複数のフィールドを絡めた select

>社員名   入社日    退社日
>
>山田   2000/04/01  2003/08/31
>鈴木   2001/05/01  2003/06/30
>大山   2000/03/01  (null)
>山本   2004/01/01  2004/05/31
>
>このようなテーブルから、
>入社日、退社日を「合わせて」昇順ソートしたような形で
>
>大山 入社 2000/03/01
>山田 入社 2000/04/01
>鈴木 入社 2001/05/01
>鈴木 退社 2003/06/30
>山田 退社 2003/08/31
>山本 入社 2004/01/01
>山本 退社 2004/05/31
>
>このような結果を得たいのですが
>どのようなSQL文、又はロジックで得られるものでしょうか?


工夫の余地はいろいろありますが、とりあえず、こんな雰囲気です。

・FROM句にサブクエリーが使えるバージョンの場合

SELECT * FROM (
SELECT 社員名,'入社' AS 入退社区分,入社日 AS 日付
UNION ALL
SELECT 社員名,'退社' AS 入退社区分,退社日 AS 日付
) AS X
WHERE 日付 IS NOT NULL
ORDER BY 日付,社員名


・バージョンが古い場合

CREATE TABLE X(社員名 TEXT,入退社区分 TEXT,日付 DATE);
INSERT INTO X SELECT 社員名,'入社',入社日 FROM テーブル;
INSERT INTO X SELECT 社員名,'退社',退社日 FROM テーブル;
SELECT * FROM X WHERE 日付 IS NOT NULL ORDER BY 日付,社員名;

-- 
UNO Shintaro, 宇野 信太郎
mailto:uno@xxxxxxxxxx
http://www.venus.dti.ne.jp/~uno/

[前][次][番号順一覧][スレッド一覧]

      9490 2004-05-31 22:20 [mokonan <mokonan@xxx] 複数のフィールドを絡めた select         
->    9495 2004-06-01 00:38 ┗[UNO Shintaro <uno@xx]                                       
      9496 2004-06-01 02:03  ┗["HIROSE, Masaaki" <h]                                     
      9497 2004-06-01 09:46   ┗[UNO Shintaro <uno@xx]                                   
      9498 2004-06-01 09:52    ┗[UNO Shintaro <uno@xx]