2017-04-05 18 views
1

私はTSQLの初心者で、TSQLで条件に関するガイダンスを得ることを望んでいました。別の列の条件に基づいて同じ列を2回クエリする方法はありますか?

同じSQLフィールドが異なる列としてクエリされる方法はありますか?私が定義したさまざまなステータスからファイルが移動すると私のフィールド名が変わり、状態変化の関連するタイムスタンプを使っていくつかの傾向を分析しようとしています。私は、彼らがワークフロー・プロセス内を移動することは、特定のファイルの状態に基づいて作成していたレポートを持って

<File_History 
Loanstatusdescriptor= “Underwrite Assigned” Status.EventTime= “4/1/2017 12:05”> 

<File_History 
     Loanstatusdescriptor= “Closing Request Received” Status.EventTime= “4/3/2017 17:15”> 

:たとえば、ファイルに関連付けられているデータは次のようになります。 クエリは次のようになりますか?

SELECT 

LoanInfo.UnderwriterName 

,File_History.Status.EventTime (IF loanstatusdescriptor= “Underwrite Assigned”) AS ‘Underwriter Assigned Date’ 

,File_History.Status.EventTime (IF loanstatusdescriptor= “Closing Request Received”) AS ‘Closing Request Receieved Date’ 

...のようになります。

最終製品は、私は列が融資状況に基づいて作成することが可能となるT-SQLステートメントを書くでしょうどのように

Underwriter|Underwriter Assigned Date |Closing Request Received Date 
    Bobby Brown 4/1/2017     4/3/2017 
    Sally Jones 4/7/2017     4/9/2017 
    Chris Graff 4/6/2017     4/17/2017 

ようになるでしょうか? File_History_Statusを想定し

+0

あなたは私たちにあなたのテーブルのスキーマを表示することができますか? –

答えて

1

LoanInfoに接合することができるテーブルです。

列の既知量との条件付きの集約を使用:

select 
    li.UnderwriterName 
    , [Underwriter_Assigned_Date] = max(case 
     when fhs.LoanStatusDescriptor = 'Underwriter Assigned' 
     then fhs.EventTime 
     end) 
    , [Closing_Request_Received_Date] = max(case 
     when fhs.LoanStatusDescriptor = 'Closing Request Received' 
     then fhs.EventTime 
     end) 
from LoanInfo li 
    inner join File_History_Status fhs 
    on li.LoanId = fhs.LoanId 
group by li.UnderwriterName 
+0

こんにちはSqlZim、ありがとうございました。 他のテーブルをクエリに結合すると、集計MAXによって他のカラムがクエリに含まれなくなります。集合関数を削除すると、クエリが実行できますが、作成されたユーザー定義の列内に複数の重複したNULLがあります。 問合せのGROUP BY部分にこれらの列をすべて追加して、問合せを実行する必要がありますか? –

+0

@ J.Moraはい、集計されていないすべての列を 'group by'に含めます。 – SqlZim

+0

恐ろしい助けをありがとう! –

関連する問題