0

これが過去に尋ねられたことがある場合は、申し訳ありませんが、私は質問を調べましたが、答えが見つかりません.

次のように、複数のエントリを持つテーブルがあります。

    key   | type   | Code  | Date

    1234  | S      | 10DY  | 01/10/2012
    1234  | E      | 10DY  | 31/10/2012
    12376 | S      | 10DY  | 11/10/2012
    12376 | E      | 10DY  | 21/10/2012

次のように表示されるようにデータを抽出したいと思います。

    key   |  Code  | S_Date     | E_Date

    1234  |  10DY  | 01/10/2012 | 31/10/2012
    12376 |  10DY  | 11/10/2012 | 21/10/2012

現在、私はこれを持っています:

SELECT  key, code, CASE WHEN type = 'S' THEN Date END AS S_Date, 
CASE WHEN type = 'E' THEN Date END AS E_Date
FROM  Table1
WHERE code = '10DY'
4

3 に答える 3

0

S_Date < E_Date と仮定すると、次のようになります。

SELECT `key`, `code`, MIN(`Date`) AS S_Date, MAX(`Date`) AS E_Date FROM Table1 WHERE code='10DY' GROUP BY `key`
于 2013-11-04T16:41:45.840 に答える
0

必要なのは、次の SQL ステートメントだけです。

SELECT key, code, MIN(Date) AS S_Date, MAX(Date) AS E_Date 
FROM Table1
GROUP BY key, code

タイプ = 'S' の行とタイプ = 'E' の行のペアが常にある場合、改善されたバージョンは次のとおりです。

SELECT key, code, MIN(Date) AS S_Date, MAX(Date) AS E_Date 
FROM Table1
GROUP BY key, code
HAVING count(*) = 2
于 2014-08-04T12:50:55.520 に答える