2017-08-09 3 views
-1

次の基準を満たすすべての '要求'を見つけることができる必要があります:同じ部門の同じmemberIDに対して「スキーム」も表示する必要があります(これは独自の列です)。これは、ExcelまたはSQLで実行できます。ありがとう。 利用可能な列は 'requestID' 'memberID' 'Date Created''department''schemeです。非常に複雑な基準を満たし、数式/クエリを作成できないすべてのデータを見つける必要があります

Below is an image of some sample data.

+1

ポストは、あなたがこれまでにしようとしている何を。 – coinbird

+1

また、あなたの質問をいくつかのサンプルデータ(DDL + DMLがそれを行う最善の方法です)と希望する結果を含む関連テーブルに含めるように質問してください。それについて考えてみてください**もしあなたが書き方を理解できないのであれば、データ構造を知らなくても**どうすればいいですか** ** –

答えて

1

あなたは以下のように問い合わせることができます:

Select * from (
    Select *, RowCnt = Count(*) over(partition by MemberId, Department, Convert(date, [Date Created])) 
     from yourtable) a 
    Where a.RowCnt >= 3 
+0

ありがとう、どうすればいいですか7月7日から8月6日の間にリクエストを返すだけですか? –

+0

あなたはどこに条件をサブクエリのどこに追加することができますか20170731と20170806の間のdatecolumn –

+0

句を含めて最初の答えを編集できますか?また、日付の列名も簡略化されています。これは私のデータに日付が表示される方法です04/08/2017 20:06:14。 –

0

あなたはEXISTSの使用:

SELECT r1.requestId, 
     r1.memberID, 
     r1.department, 
     r1.[Date Created], 
     r1.scheme 
    FROM Requests r1 
WHERE EXISTS(SELECT COUNT(*) 
       FROM requests r2 
       WHERE r2.memberId = r1. memberId 
       AND r2.department = r1.department 
       AND r2.[Date Created] = r1.[Date Created] 
       GROUP BY r2.memberId,r2.departmetId,r2.[Date Created] 
       HAVING COUNT(*) > 3) 
    AND r1.[Date Created] > DATEADD(dd,-8,GETDATE()) 
+0

7月31日から8月6日の間の最後の週だけ、これを実行したい大量のレコードがあるので、ありがとうございます –

+0

WHERE句に条件を追加するだけです: –

関連する問題