1

私は州全体のアプリケーションを管理し、Tableauデータの視覚化を作成するために使用しています。

私は、連絡先エントリと今日 (ケース ノートの日付) の間の経過時間を示すビジュアライゼーションの作成を任されています。ケースメモ表で最大ケースメモ日付を分離する方法を知っています。

Select 
    [Case_Master_ID],
    [Case_Note_Date],
    [Case_Note_Category_Desc],
    [Case_Note_Summary_Narr]
From 
    buCase_Note 
Where 
    Case_Note_Date = (Select MAX(Case_Note_Date)
                      From buCase_Note)

このクエリは、今日から表に最大のケース ノートがあることを示しています。問題は、今日の参加者だけでなく、すべての参加者の最大ケースメモを表示する必要があることです。ケース ノートを表示するために使用していた元のクエリは次のとおりです。

Select
    vc.[_Case Master ID],
    vc.[_Caseload Assignment Current],
    vc.[_Participant Name],
    vc.[Case Status],
    vc.[Reporting Structure Level 4],
    vc.[Reporting Structure Level 5],
    vc.[Application Date],
    vc.[Eligibility Date],
    vc.[Eligibility Determination Extension Date],
    vc.[Eligibility Extended To Date], 
    vc.[Days in Application],
    cn.[Case_Note_Date], 
    cn.[Case_Note_Category_Desc],
    cn.[Case_Note_Summary_Narr]
From  
    biVR_Cases vc
Left outer Join 
    buCase_Note cn ON cn.Case_Master_ID = vc.[_Case Master ID]

biVR_Cases開いているすべてのクライアントを表示するには、左側を維持する必要があります。次に、ケース ノート テーブルに参加する必要があります。すべての参加者について、ケース ノートの最大日付を表示したいと考えています。これを上記のクエリの最後に追加すると:

Where cn.[Case_Note_Date] = (
    Select
        MAX(cn.Case_Note_Date)
    From buCase_Note)

SSMS 2012 では次のエラーが表示されます。

集計は、HAVING 句または選択リストに含まれるサブクエリ内になく、集計される列が外部参照でない限り、WHERE 句に表示されない場合があります。

左側のテーブルを維持しbiながら、ケース ノート テーブルに正常に参加し、参加者ごとに最新のケース ノートのみを取り込みたいと考えています。

詳細の追加: もちろん、次のクエリを実行したときに取得するデータのサンプルを次に示します。

Select
 vc.[_Case Master ID],
 vc.[_Caseload Assignment Current],
 vc.[_Participant Name],
cn.[Case_Note_Date],
From  biVR_Cases vc
LEFT outer JOIN buCase_Note cn ON vc.[_Case Master ID] = cn.Case_Master_ID

_ ケースロード 割り当て 現在のテスト参加者 名前 ケースノート 日付 テスト カウンセラー 参加者 A 2010 年 9 月 29 日 2010 年 9 月 23 日 2010 年 8 月 30 日 2010 年 6 月 30 日

bi テーブルには、名前、アプリケーション、ケース マスター ID などの参加者情報が含まれます。casenote テーブルには、ケース マスター ID も含まれるため、結合されます。また、各エントリが作成された日付も含まれています。したがって、上記のデータセットについては、各参加者の最新のケースノートのみを取り込もうとしています。上記のサンプルには 1 つしか含まれていませんが、15,000 を超えています。各参加者には、多くのケース ノートがあります。各参加者の最新のケースノートと今日の日付の差を計算できるように、一番上のケースノートを取得しようとしています。追加すると:

Where cn.[Case_Note_Date] = (Select
top 1 [Case_Note_Date]
From buCase_Note
Order by 1 DESC))
 OR 
Where Case_Note_Date=(
Select
MAX(Case_Note_Date)
From buCase_Note)

今日作成されたケースノートを持つ参加者の最上位または最大のケースノートのみが表示されます。ケースノート テーブルに最大ケースノートを表示する代わりに、参加者ごとの最大ケースノートが必要です。それがより理にかなっていることを願っています。

4

2 に答える 2

1

私が以下に含めたようなものを試すことができます。実際のデータがなければ、それが十分に効率的かどうかはわかりませんが、うまくいくはずです。ただし、より良い答えが得られた場合は、それを知りたいです。

Select vc.[_Case Master ID],
 vc.[_Caseload Assignment Current],
 vc.[_Participant Name],
 vc.[Case Status],
 vc.[Reporting Structure Level 4],
 vc.[Reporting Structure Level 5],
 vc.[Application Date],
 vc.[Eligibility Date],
 vc.[Eligibility Determination Extension Date],
 vc.[Eligibility Extended To Date], 
 vc.[Days in Application],
 cn.[Case_Note_Date], 
 cn.[Case_Note_Category_Desc],
 cn.[Case_Note_Summary_Narr]
From  biVR_Cases vc
LEFT outer JOIN 
   (SELECT Case_Master_ID, Case_Note_Date, Case_Note_Category_Desc, Case_Note_Summar_Narr, 
           ROW_NUMBER() OVER (PARTITION BY Case_Master_ID ORDER BY Case_Note_Date DESC) as RowNum FROM buCase_Note) cn 
   ON cn.Case_Master_ID = vc.[_Case Master ID] AND cn.RowNum=1
于 2016-05-06T21:38:00.990 に答える
0

cn.から を削除します。MAX(cn.Case_Note_Date)メインクエリから列を参照したくない。Case_Note_Dateから選択したいだけですbuCase_Note

したがって、クエリ全体は次のようになります

Select
 vc.[_Case Master ID],
 vc.[_Caseload Assignment Current],
 vc.[_Participant Name],
 vc.[Case Status],
 vc.[Reporting Structure Level 4],
 vc.[Reporting Structure Level 5],
 vc.[Application Date],
 vc.[Eligibility Date],
 vc.[Eligibility Determination Extension Date],
 vc.[Eligibility Extended To Date], 
 vc.[Days in Application],
 cn.[Case_Note_Date], 
 cn.[Case_Note_Category_Desc],
 cn.[Case_Note_Summary_Narr]
From  biVR_Cases vc
LEFT outer JOIN buCase_Note cn ON cn.Case_Master_ID = vc.[_Case Master ID]
Where cn.[Case_Note_Date] = (Select
MAX(Case_Note_Date)
From buCase_Note)
于 2016-05-06T19:57:29.857 に答える