質問編集履歴

2 情報の追加を行いました。

meg278

meg278 score 11

2019/05/09 13:20  投稿

グループ内で条件に当てはまらないレコードを持つグループを取得したい
MySQLを使用しています。
以下のテーブルで、
提出日または入力日が指定期間内(2019/04/01~2020/03/31)のデータを持たない
会社コード、社員コードを抽出したいです。
**テーブル T1**
|会社コード|社員番号|連番|提出日|入力日|
|:--|:--:|--:|
AAA|0001|1|2018-03-20|2018-03-30
AAA|0001|2|2019-04-10|NULL
AAA|0002|1|2019-03-10|NULL
AAA|0003|1|2019-04-10|2019-04-15
BBB|0004|1|2019-03-10|NULL
BBB|0004|2|NULL|2018-03-30
上記の例では
|会社コード|社員番号|
|:--|--:|
|AAA|0002|
|BBB|0004|
の取得を実現したいです。
次のようなSQLを考えましたが期待する結果が取れません。
```SQL
select 会社コード,社員番号 from T1
 where
  ((提出日 >= '2019-04-01' and 提出日 < '2020-04-01') or
         (入力日 >= '2019-04-01' and 入力日 < '2020-04-01'))
 group by 会社コード,社員番号 having count(*) =0
```
---
追記です。
社員番号はAAA社にもBBB社にも同じ番号のレコードが存在し、会社コード+社員番号でユニークです。
以下create table文となります。
```SQL
CREATE TABLE `T1` (
 `会社コード` varchar(3) NOT NULL,
 `社員番号` varchar(5) NOT NULL,
 `連番` smallint(2) NOT NULL,
 `提出日` date DEFAULT NULL,
 `入力日` date DEFAULT NULL,
 PRIMARY KEY (`会社コード`,`社員番号`,`連番`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
```
どうぞよろしくお願いいたします。
  • MySQL

    9255 questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

  • SQL

    4159 questions

    SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

1 タグの追加

meg278

meg278 score 11

2019/05/09 12:13  投稿

グループ内で条件に当てはまらないレコードを持つグループを取得したい
MySQLを使用しています。
以下のテーブルで、
提出日または入力日が指定期間内(2019/04/01~2020/03/31)のデータを持たない
会社コード、社員コードを抽出したいです。
**テーブル T1**
|会社コード|社員番号|連番|提出日|入力日|
|:--|:--:|--:|
AAA|0001|1|2018-03-20|2018-03-30
AAA|0001|2|2019-04-10|NULL
AAA|0002|1|2019-03-10|NULL
AAA|0003|1|2019-04-10|2019-04-15
BBB|0004|1|2019-03-10|NULL
BBB|0004|2|NULL|2018-03-30
上記の例では
|会社コード|社員番号|
|:--|--:|
|AAA|0002|
|BBB|0004|
の取得を実現したいです。
次のようなSQLを考えましたが期待する結果が取れません。
```SQL
select 会社コード,社員番号 from T1
where
((提出日 >= '2019-04-01' and 提出日 < '2020-04-01') or
(入力日 >= '2019-04-01' and 入力日 < '2020-04-01'))
group by 会社コード,社員番号 having count(*) =0
```
どうぞよろしくお願いいたします。
  • MySQL

    9255 questions

    MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

  • SQL

    4159 questions

    SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る