でやりたいんかわかりません。私はあなたが作業しようとしているデータの形状をシミュレートするために作られた値のテーブルを使用しています(この例には関係のない値を取り除きます)。
select a.TourId
, b.TourDate
from (values
(1, Convert(datetime2(0), N'2016-01-01 00:00:00'))
, (1, Convert(datetime2(0), N'2016-01-01 04:00:00'))
, (1, Convert(datetime2(0), N'2016-01-03 00:00:00'))
, (1, Convert(datetime2(0), N'2016-01-04 00:00:00'))
, (1, Convert(datetime2(0), N'2016-01-04 04:00:00'))
, (1, Convert(datetime2(0), N'2016-01-05 00:00:00'))
, (2, Convert(datetime2(0), N'2016-02-11 00:00:00'))
, (2, Convert(datetime2(0), N'2016-02-11 18:00:00'))
, (2, Convert(datetime2(0), N'2016-02-13 00:00:00'))
, (2, Convert(datetime2(0), N'2016-02-14 00:00:00'))
, (2, Convert(datetime2(0), N'2016-02-14 18:00:00'))
, (2, Convert(datetime2(0), N'2016-02-15 00:00:00'))
) as a (TourId, TourRunTimeStamp)
cross apply (values(Convert(date, a.TourRunTimeStamp))) as b (TourDate)
group by a.TourId
, b.TourDate
having Count(1) != 2; -- find ids with exactly two entries
-- having Count(1) in (2, 4); -- find ids with exactly two or four entries
-- having Count(1) % 2 = 0; -- find ids with an even number of entries
ここにロジック単純です:日付に日時を変換する(我々は計算再利用できるように、この限りで句で行われている)、TourId
+ TourDate
のグループは、レコードの数を数えます2に等しいカウントを持たないすべての結果を除外します。
ベンのための0を示し、これではありません明らかです。技術的なものを脇に置いて、あなたが何を扱っているのか、何を達成しようとしているのかを簡単な言葉で説明してください。 –
どのレコードに1日あたり2レコード、1日に4レコードしか持たないレコードを識別したいのですか?私の簡略化された質問を参照してください。 –
[パブリックフォーラムでT-SQL質問を投稿する方法]に関する次の記事をお読みください(http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on- a-public-forum /) –