2016-05-01 8 views
1

ゴール:
カラムsecondidのデータである重複データを取得する場合は、最新の日付から1行だけを取得します。たとえば、以下のデータでは2つのdatetimeがありますが、secondid列の値6からデータ '2016-05-02 07:34:14.377'を取得したいとします。最新の行のみを表示

問題:
コードが機能していないようで、何が欠けていますか。

情報:
多くのデータがあり、コード内で値をハードコードすることはできません。

CREATE TABLE [dbo].[testing2](
    [id] [int] NOT NULL, 
    [secondid] [int] NULL, 
    [value] [varchar](30) NULL, 
    [category] [int] NULL, 
    [test_id] [int] NULL, 
    [id_type] [int] NOT NULL, 
    [Testing2Datetime] [datetime] not NULL, 
CONSTRAINT [PK_testing2] PRIMARY KEY CLUSTERED 
(
    [id] ASC 
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] 
) ON [PRIMARY] 


INSERT INTO [test].[dbo].[testing2] 
VALUES (3, 3, 'a' ,2 ,11 ,1, '2016-05-01 07:34:14.377'); 

INSERT INTO [test].[dbo].[testing2] 
VALUES (4, 4, 'a' ,2 ,11 ,1, '2016-05-01 07:34:14.377'); 

INSERT INTO [test].[dbo].[testing2] 
VALUES (5, 5, 'a' ,2 ,11 ,0, '2016-05-01 07:34:14.377'); 

INSERT INTO [test].[dbo].[testing2] 
VALUES (6, 6, 'a' ,2 ,11 ,2, '2016-05-01 07:34:14.377'); 

INSERT INTO [test].[dbo].[testing2] 
VALUES (7, 6, 'a' ,2 ,11 ,2, '2016-05-02 07:34:14.377'); 



select 
    bb.secondid, 
    max(bb.Testing2Datetime) 
from [dbo].[testing2] bb 
group by 
    bb.secondid, 
     bb.Testing2Datetime 

enter image description here

答えて

2

当たりTesting2Datetimeの最大値からbb.Testing2Datetime列を削除はTesting2Datetimeです。あなたはgroup by句から、それを削除し、のみsecondidあたりの最大値を取得する必要があります。

select 
    bb.secondid, 
    max(bb.Testing2Datetime) 
from [dbo].[testing2] bb 
group by 
    bb.secondid -- Here! 
+0

ありがとうございます! –

1

Group by

select 
    bb.secondid, 
    max(bb.Testing2Datetime) as [Max_Testing2Datetime] 
from [dbo].[testing2] bb 
group by 
    bb.secondid 

又はこの(Row_Number窓関数)

select * 
from 
(
select 
    bb.secondid, 
    bb.Testing2Datetime, 
    Row_number()over(partition by bb.secondid order by bb.Testing2Datetime desc) as RN 
from [dbo].[testing2] bb 
) A 
Where RN = 1 
+0

はあなたの助けをありがとう! –

関連する問題