0

テーブルに対して SQL 選択クエリを作成する必要がありますが、問題がある特別な条件が 1 つあります。私のテーブル構造は以下のようなものです:

ID       Name         Serial      CreatedOn
1         A            1000         2014-10-10
2         A            1000         2014-10-12
3         A            1000         2014-12-12
4         B            1023         2014-10-01

私のクエリは作成日を比較する必要があります。名前とシリアルが同じで、作成日が他のレコードより 1 か月未満古いレコードが 1 つ以上ある場合は、それらを削除する必要があります。たとえば、私の例のテーブルでは、ID=2 の行を選択クエリから削除する必要があります。これは、最初の行と同じデータがあり、日付が 1 か月未満であるためです。日付が 1 か月以上前です。

この選択クエリを作成するにはどうすればよいですか?

ありがとう、

4

2 に答える 2

0

これを試してください:

Select bb.ID, aa.*
From (
    Select  Name, Serial, Min(CreatedOn) as CreatedOn
    From (Select Name, Serial, Left(CreatedOn, 4)+Substring(CreatedOn, 6, 2) as tPrd, CreatedOn From Table1 ) a
    Group By Name, Serial, tPrd
    ) aa
Left Join Table1 bb             --> to get column "ID"
    On bb.Name = aa.Name
    And bb.Serial = aa.Serial
    And bb.CreatedOn = aa.CreatedOn

列「ID」が必要ない場合。

これがクエリです

Select  Name, Serial, Min(CreatedOn) as CreatedOn
From (Select Name, Serial, Left(CreatedOn, 4)+Substring(CreatedOn, 6, 2) as tPrd, CreatedOn From Table1 ) a
Group By Name, Serial, tPrd

このクエリは、列「CreatedOn」のデータ型が文字列の場合に使用されます。

列「CreatedOn」のデータ型が日付の場合、変更する必要があります

Left(CreatedOn, 4)+Substring(CreatedOn, 6, 2) as tPrd

への変更

Convert(Varchar(6), CreatedOn, 112) as tPrd
于 2014-11-06T08:56:44.967 に答える