sqlについての質問
お世話になります。
下記コードにて、抽出されたデータに不備があります。
「q2.新新品番(+) = A.品番」としていますが、
完全一致しない品番が見受けられ、trimを使ったら
良いのではと思うのですが、どこにtrimを入れたら
良いのか、又は考え方自体違うのか
現在テンパっている所でございます。
どなたか良いアドバイスを頂けたらと思い、
ご質問させて頂きました。
何卒、ご教示頂けます様、宜しくお願い致します。
記
select case
when substr(q2.新新品番,8,1)='_' then
substr(q2.新新品番,1,7)
else
q2.新新品番
end as 品番
,SUM(q2.新新合格数) AS 生産合格数
,A.伝票ID,A.品番,A.新入庫数量 as 区画入庫数,A.区画番号
from
(
select case
when substr(q1.新品番,6,1)='_' then
substr(q1.新品番,1,5)
else
q1.新品番
end as 新新品番
,SUM(q1.新合格数) AS 新新合格数
from
(
SELECT 更新日時,
case
when substr(ハンドル,7,1)='_' then
substr(ハンドル,1,6)
else
ハンドル
end as 新品番
,SUM(合格本数) AS 新合格数
FROM D最終検査履歴
WHERE 更新日時 BETWEEN '2012-5-31' and '2012-6-01'
group by 更新日時, case
when substr(ハンドル,7,1)='_' then
substr(ハンドル,1,6)
else
ハンドル
end
)q1
group by case
when substr(q1.新品番,6,1)='_' then
substr(q1.新品番,1,5)
else
q1.新品番
end
)q2 ,
(select 伝票ID,品番,sum(入庫数量)as 新入庫数量,区画番号
from D屋外入庫
where 登録日時 between '2012-5-31' and '2012-6-01' and 伝票ID='SN'
group by 伝票ID, 品番, 区画番号
)A
where q2.新新品番(+) = A.品番
group by case
when substr(q2.新新品番,8,1)='_' then
substr(q2.新新品番,1,7)
else
q2.新新品番
end, A.伝票ID, A.品番, A.新入庫数量, A.区画番号
お礼
ありがとうございます。 期待通りの計算結果になりました。 大変恐縮なのですが、こちらの構文の解説のあるアドレス等を教えて頂けないでしょうか・・・・・ Accessとは勝手が違いすぎて、どうにも理解できず進められなくて・・・・・ 宜しくお願いできればと思います