よろしくお願いいたします。
Microsoft SQL Serverを使用しています。
適用終了日が最新(6/30)の中で、適用開始日が最新(3/1)のものを取ってきたいです。
朝からずっと考えているのですが、適用開始日4/1で適用終了日が6/30のものしか取ってこれません。
どなたかご教示お願い致します。
●表
ID | 適用開始日 | 適用終了日 | 単価 |
---|---|---|---|
1 | 4/1 | 5/31 | 100 |
1 | 3/1 | 6/30 | 200 |
1 | 2/1 | 6/30 | 250 |
●抽出後
ID | 適用開始日 | 適用終了日 | 単価 |
---|---|---|---|
1 | 3/1 | 6/30 | 200 |
CREATE TABLE [dbo].[マスタ外注単価]( [加工先コード] [varchar](10) NULL, [商品コード] [varchar](25) NULL, [数量未満] [decimal](13, 0) NULL, [適用開始日] [datetime] NULL, [適用終了日] [datetime] NULL, [仕入本体単価] [decimal](13, 0) NULL, ) コード
select * from( select distinct 2 区分,n4.加工先コード,n4.商品コード,適用開始日,適用終了日,開始日,終了日,数量未満,仕入本体単価 from [dbo].[マスタ外注単価]n4 inner join( select 加工先コード,商品コード,max(適用終了日)as 終了日 from[dbo].[マスタ外注単価] where 適用終了日>='2021/12/01' and 適用終了日 is not null group by 加工先コード,商品コード )n5 on n4.商品コード=n5.商品コード and n4.加工先コード=n5.加工先コード inner join( select 加工先コード,商品コード,max(適用開始日)as 開始日 from[dbo].[マスタ外注単価] where 適用終了日>='2021/12/01' and 適用終了日 is not null group by 加工先コード,商品コード )n6 on n4.商品コード=n6.商品コード and n4.加工先コード=n6.加工先コード where n4.商品コード='100000054' and 適用終了日=終了日)b where 適用開始日 = max(適用開始日) コード
回答2件
あなたの回答
tips
プレビュー