LN_NUMBER RUN_DATE SALE_DATE STATUS_CODE TYPE PROCESSOR_ID
------------------------------------------------------------------------
0201203909 02/21/17 09/30/15 R 1 TG1
0201203909 02/21/17 R 2 TG1
0201203909 02/21/17 A 1 MW1 -------choose this row for LN_number 0201203909
0201105919 02/21/17 08/24/16 S 2 MW1 ---choose this row for LN_number 0201105919
0201105919 02/21/17 08/24/16 S 2 MW1
0201105919 02/21/17 07/01/15 R 2 TG1
1400000138 02/21/17-----------------------------------------------------------Choose this for LN_NUMBER 1400000138
私は上記の閉鎖テーブルを持っています。クロージャーテーブルからレコードを選択する必要があります。ステータスコードが存在する場合、(ROWNUM = 1としてそれを作る)、その行を選択し=ランキング関数で複数の注文方法SQL Server 2014
- :
条件はこれです。
- ステータスコードがAでない場合は、最新のSALE_DATEのレコードを選択します(RowNum = 1にする)。
私は、このコードは= 0201105919 LN_NUMBERのため正常に動作している
SELECT
[LN_NUMBER],
[RUN_DATE] ,
[SALE_DATE],
[STATUS_CODE],
[TYPE],
[PROCESSOR_ID],
ROW_NUMBER() OVER (partition by [LN_NUMBER] order by
case when [STATUS_CODE]='A' then [STATUS_CODE] end asc,
case when [STATUS_CODE]!='A' then CONVERT(DATE,[SALE_DATE]) end desc)
as 'RowNum'
FROM [dbo].[Closure ]
このコードを試してみました。しかし、LN_NUMBER = 0201203909の場合、必要な方法でrowNumを取得できません。
これは私が結果を取得していますものです:
LN_NUMBER RUN_DATE SALE_DATE STATUS_CODE TYPE PROCESSOR_ID RowNum
0201203909 02/21/17 09/30/15 R 1 TG1 1
0201203909 02/21/17 R 2 TG1 2
0201203909 02/21/17 A 1 MW1 3
0201105919 02/21/17 08/24/16 S 2 MW1 1
0201105919 02/21/17 08/24/16 S 2 MW1 2
0201105919 02/21/17 07/01/15 R 2 TG1 3
誰もがSQLサーバー2014を使用していますthis.Iに私を助けてもらえお時間をありがとうございましたと
たらどう? sale_dateのNULLをどのように処理する必要がありますか? –
@vkp行を1つだけ選択する必要があります。 – Please
OK行を1つだけ選択する必要があります。どのようにネクタイを壊すのですか? – Paparazzi