0

RFSとRFS_Historyという2つのテーブルがあります。

 RFS_id  | name 
 --------+--------
    12   |  xx
    14   |  yy
    15   |  zz

図1:RF​​Sテーブル

     RFS_id  |  gate | End    | start 
     --------+-------+--------+-------
        12   |  aa   | 19/02  | 20/03
        12   |  bb   | 30/01  | 12/08
        12   |  cc   | 30/01  | 12/08
        13   |  aa   | 30/01  | 12/08
        12   |  dd   | 30/01  | 12/08

図2:RFSの履歴

私の最初のクエリは、FRSname='xx'である情報を取得するためのselect*クエリです。

SELECT * FROM RFS, RFSHistory 
WHERE RFSname="xx"  And RFShistory.RFS_ID=RFS.RFS_ID

結果は次のとおりです。

     RFS_id  |  gate | End    | start 
     --------+-------+--------+-------
        12   |  aa   | 19/02  | 19/01
        12   |  bb   | 12/04  | 12/02
        12   |  cc   | 20/03  | 12/03
        12   |  dd   | 30/09  | 12/08

図3

ただし、次の形式のような結果を取得したい:

 RFS_id  | gate_aa | gate_bb | gate_cc | gate_dd
 ----------------------------------------------
    12   | 30 days  |  60dyas | 8days   | 18days

gate_aaデュライオンであり、から取得しstart - end dateます。この結果を得るために単一のクエリを書くのを手伝ってください。

4

3 に答える 3

0

datediff()日付の違いを取得Pivot()し、ここのようにゲートごとの列で行をクローンに変換する ために使用します

サンプル構文

SELECT DATEDIFF(day,'2008-06-05','2008-08-05') AS DiffDate
于 2013-02-22T10:09:15.957 に答える
0

行を値の列に変換したいと思います。これは、ピボットを使用して行うことができます。

SELECT * FROM RFS, RFSHistory
pivot  for columname on [values]

私は実際に構文を忘れましたが、ググることができます

于 2013-02-22T13:07:52.773 に答える
0

以下のクエリを使用して、差分の b/w 日付を取得できます

SELECT RFS.ID,(RFS_HISTORY.end_t-RFS_HISTORY.start_t) AS DiffDate,gate FROM RFS, RFS_HISTORY WHERE name='aa' And RFS_HISTORY.ID=RFS.ID by RFS.ID,gate,RFS_HISTORY.end_t,RFS_HISTORY. start_t

于 2013-02-22T11:09:30.257 に答える