前提・実現したいこと
・SQLServer 2019
・SQL文
SQLにて複数のテーブルの実績集計を行い
下記のような集計_Data結果を得たいです。
商品シリアルの部分一致集計や複数のテーブルの集計が必要のため
非常に難航しており困っています。
ID | 日時 | 商品名 | Inコード | Outコード | In計画 | Out計画 | In実績 | Out実績 |
---|---|---|---|---|---|---|---|---|
1 | 2021-08-01 | パンA | JI-00001 | TH-123456 | 1 | 1 | 1 | 1 |
2 | 2021-08-01 | パンB | JI-00002 | TH-100012 | 2 | 2 | 2 | 2 |
3 | 2021-08-02 | パンA | JI-00001 | TH-123456 | 1 | 1 | 1 | 1 |
4 | 2021-08-03 | パンC | JI-00003 | DH-52R-45 | 2 | 2 | 2 | 2 |
5 | 2021-08-03 | パンA | JI-00001 | TH-123456 | 2 | 2 | 2 | 2 |
6 | 2021-08-04 | パンC | JI-00003 | DH-52R-45 | 1 | 1 | 1 | 0 |
7 | 2021-08-04 | パンB | JI-00002 | TH-100012 | 1 | 1 | 1 | 0 |
8 | 2021-08-04 | パンA | JI-00001 | TH-123456 | 2 | 2 | 0 | 0 |
1.計画データは
- T_計画_Data テーブルから予定日/商品コード毎に
|In計画|Out計画|を集計
2.IN実績データは
- T_In_Data テーブルから出荷日時/商品コード毎にカウント
- |判定|がOKのもので
商品シリアルの重複は取り除いてカウントを行いたいです。
- 商品シリアル(個別番号+連番)で実績が残っているため
T_紐づけ表 テーブルの
|商品シリアル|開始文字数|文字数|に一致するものを
商品コード毎に集計する必要があります。(含む検索?)
- 実績は当日8:30~翌8:30が同日実績の扱いになります。
3.Out実績データは
- T_Out_Data テーブルから納入完了日/商品コード毎に
納入状況が[完了]のものを |納入数| を合算集計します。 - 実績は当日8:30~翌8:30が同日実績の扱いになります。
- ※IN実績とOUT実績の商品コードが違うため
T_紐づけ表テーブルの|Inコード|Outコード|で紐づける必要があります。
T_計画_Data
ID | 予定日 | 商品名 | 商品コード | In計画 | Out計画 |
---|---|---|---|---|---|
1 | 2021-08-01 | パンA | JI-00001 | 1 | 1 |
2 | 2021-08-01 | パンB | JI-00002 | 2 | 2 |
3 | 2021-08-02 | パンA | JI-00001 | 1 | 1 |
4 | 2021-08-03 | パンC | JI-00003 | 2 | 2 |
5 | 2021-08-03 | パンA | JI-00001 | 2 | 2 |
6 | 2021-08-04 | パンC | JI-00003 | 1 | 1 |
7 | 2021-08-04 | パンB | JI-00002 | 1 | 1 |
8 | 2021-08-04 | パンA | JI-00001 | 2 | 2 |
T_In_Data
ID | 商品シリアル | 検査日時 | 判定 | 出荷日時 |
---|---|---|---|---|
1 | 1AB100001 | 2021-08-01 08:31:01 | NG | 2021-08-02 15:03:02 |
2 | 2AB100002 | 2021-08-01 08:35:01 | OK | 2021-08-01 15:01:09 |
3 | 3TE00001 | 2021-08-01 08:41:01 | OK | 2021-08-01 15:10:02 |
4 | 3TE00002 | 2021-08-01 08:52:01 | OK | 2021-08-01 15:15:02 |
5 | 1AB100001 | 2021-08-02 08:52:01 | OK | 2021-08-02 15:03:02 |
6 | AF1-125001 | 2021-08-02 09:03:01 | OK | 2021-08-02 15:09:02 |
7 | 5G000001 | 2021-08-02 23:21:01 | OK | 2021-08-03 01:01:02 |
8 | AF1-125002 | 2021-08-03 09:21:01 | OK | 2021-08-03 15:01:02 |
9 | 1AB100003 | 2021-08-03 08:31:01 | OK | 2021-08-03 15:08:02 |
10 | 2AB100004 | 2021-08-03 08:31:01 | OK | 2021-08-03 15:09:02 |
11 | 3TE100003 | 2021-08-03 08:31:01 | OK | 2021-08-03 15:03:02 |
T_Out_Data
|ID|商品名|商品コード|納入状況|納入予定日|納入完了日|予定数|納入数|
|:--:|:--:|:--:|:--:|--:|--:|
|1|パンA|TH-123456|完了|2021-08-01 17:00:00|2021-08-01 16:01:09|1|1|
|2|パンB|TH-100012|完了|2021-08-01 17:00:00|2021-08-01 16:01:19|2|2|
|3|パンC|DH-52R-45|完了|2021-08-03 09:00:00|2021-08-03 08:01:09|2|2|
|4|パンC|DH-52R-45|未納|2021-08-04 09:00:00|NULL|1||
|5|パンA|TH-123456|完了|2021-08-02 17:00:00|2021-08-02 16:01:09|1|1|
|6|パンA|TH-123456|未納|2021-08-03 17:00:00|NULL|2||
T_紐づけ表
ID | 商品名 | Inコード | Outコード | 商品シリアル | 開始文字数 | 文字数 |
---|---|---|---|---|---|---|
1 | パンA | JI-00001 | TH-123456 | AB1 | 2 | 3 |
2 | パンB | JI-00002 | TH-100012 | 3TE | 1 | 3 |
3 | パンC | JI-00003 | DH-52R-45 | AF1-125 | 1 | 7 |
4 | パンC | JI-00003 | DH-52R-45 | 5GJ | 1 | 3 |
発生している問題・エ
ラーメッセージ
エラーメッセージ
該当のソースコード
ソースコード
試したこと
下記のような8:30-8:30の日毎集計は
IN実績/OUT実績で行えることは確認できましたが、
IN実績商品コード一部一致集計や複数テーブルとのJOINが全くうまくいかない状態です。
'=========OUT実績=========
SELECT
CONVERT (varchar,dateadd(HOUR,-8.5,[納入完了日]),111) as 納入完了日,
[商品コード] AS [OUTコード],
Count (*) as 計数,
sum(完了数量)
FROM smt.T_Out_Data
WHERE [納入状況] = '完了' And [完了日時] >= '2021-08-01'
GROUP BY CONVERT (varchar,dateadd(HOUR,-8.5,[納入完了日]),111),[商品コード]
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。