2017-11-13 9 views
-1

私はRestart_case = Yのみを含むA2のセットに問題があると思いますが、私は助けてくださいとは確信していません。このエラーが発生しました: "_ID)AS Max_DateBegin"の後に予期しないトークン "WHERE"が見つかりました。予想されるトークンは が、私はこれがあなたが望むものであると信じて(またはそれのようなもの)あなたSQLサブクエリのエラー

SELECT A2.* FROM 
(SELECT A1.*, min(BeginDate) OVER (PARTITION BY Per_ID) AS Min_BeginDate, 
MAX(BeginDate) OVER (PARTITION BY Per_ID) AS Max_BeginDate 
WHERE RestartCase = 'Y' 
From) A2 
(SELECT distinct C.Per_ID, P.DOB, C.BeginDate, C.EndDate, C.RestartCase, P.per_type 
FROM CaseSum C LEFT JOIN PERSON p on C.ID_PRSN = P.ID_PRSN) A1 
WHERE per_Type = 1 AND BeginDate <= '9/30/2017' AND (EndDate >= '10/01/2017' OR EndDate IS NULL) 
ORDER BY A1.Per_ID 
+0

「FROM」でA2を指定したテーブルはありません。その後、私はあなたが2つの派生テーブルを持っているので混乱しますが、彼らは参加していないので、あなたが何をしているのか分かりません。 – SQLChao

+0

@SQLChao私はSQLに慣れていないので、RestartCase条件でいくつかの計算(最小日付と最大日付)を行うことができるように、A1から結果を得ることです。私はこのタイプのクエリーをどのように書くことができるのか分からないので、これを試してみました。返信ありがとう。 – user470091

+0

@a_horse_with_no_name DB2 – user470091

答えて

0

ありがとう...含めることがあります。

SELECT A2.* FROM (SELECT A1.*, MIN(BeginDate) OVER (PARTITION BY Per_ID) AS Min_BeginDate, MAX(BeginDate) OVER (PARTITION BY Per_ID) AS Max_BeginDate FROM (SELECT DISTINCT C.Per_ID, P.DOB, C.BeginDate, C.EndDate, C.RestartCase, P.per_type FROM CaseSum C LEFT JOIN PERSON P on C.ID_PRSN = P.ID_PRSN WHERE P.per_Type = 1 AND C.BeginDate <= '9/30/2017' AND (C.EndDate >= '10/01/2017' OR C.EndDate IS NULL) ) A1 WHERE A1.RestartCase = 'Y' ORDER BY A1.Per_ID ) A2

+0

コードで何らかのエラーが発生しました。実行できません – user470091

+0

上記のSQLを編集しました。それを試して? –

+0

また、あなたのエラーは何ですか? –

0

は、あなたのウィンドウ関数で条件付きCASEインライン集計を考えてみましょう

SELECT DISTINCT C.Per_ID, P.DOB, C.BeginDate, C.EndDate, C.RestartCase, P.per_type, 
       MIN(CASE WHEN C.RestartCase = 'Y' THEN C.BeginDate END) 
           OVER (PARTITION BY C.Per_ID) AS Min_BeginDate, 
       MAX(CASE WHEN C.RestartCase = 'Y' THEN C.BeginDate END) 
           OVER (PARTITION BY C.Per_ID) AS Max_BeginDate  
FROM CaseSum C 
LEFT JOIN PERSON P on C.ID_PRSN = P.ID_PRSN 
WHERE P.per_Type = 1 AND C.BeginDate <= '9/30/2017' 
    AND (C.EndDate >= '10/01/2017' OR C.EndDate IS NULL) 
ORDER BY C.Per_ID 
+0

返信ありがとうございます。 ReportCase = Yをminおよびmaxの日付列にのみ適用したい。すべてではないクエリ – user470091