2016-04-10 6 views
0

enter image description hereは示さabove.Iは、以下のように行を選択しようとしているが、そうすることができるというわけではないと私はテーブルを持っているクエリ

を適切に参加します。

LP_DATE  LP_VCHNO  LP_LEDGID LP_DRAMT  LP_CRAMT 
----------------------------------------------------------------- 
01.04.2016 Ctra#001  1    400.00000  0.00000 
          3    0.00000  2000.00000 
          7    0.00000  2000.00000 
01.04.2016 Pymnt#000001 5    300.00000   0.00000 
          1    0.00000  300.00000 

私は自己のクエリに参加推測を使用する必要がありますが、私はそれが所望の結果は、事前にachieved.Thanks可能性がどのように助言out.Please把握することはできませんよ。

+1

あなたは、単一のクエリでこれを達成できるかどうか、私は疑問です。これは、最初の2つの列について各グループの最初のレコードを表示し、残りをNULLにしたいからです。これは書式設定の問題のようです。あなたはカーソルを使用してこれをプログラムで実現することができます – Zack

+0

Firebird 3.0を使用している場合は、窓関数を使用してそのようなものを実現することができます –

答えて

0

最初の2つの列に空白の値があるため、結果テーブルが異常です。その問題以外にも、それは単にであるように思わorder byselect

select LP_DATE, LP_VCHNO, LP_LEDGID, LP_DRAMT, LP_CRAMT 
from t 
order by LP_DATE, LP_VCHNO, LP_ID; 
+0

@ZackとGordonはあなたのreply.Atに感謝します。Gordon.As Zackの提案によれば、私はカーソルを私の望む結果を使って何が起こるかを見てみるだろう... – msm

0
SELECT 
    CASE WHEN I_MIN.LP_DATE IS NULL THEN NULL ELSE I.LP_DATE END AS LP_DATE 
    , CASE WHEN I_MIN.LP_DATE IS NULL THEN NULL ELSE I.LP_VCHNO END AS LP_VCHNO 
    , I.LP_LEDGID 
    , I.LP_DRAMT 
    , I.LP_CRAMT 
FROM 
    YOUR_TABLE I 
    LEFT JOIN 
    (SELECT 
     I.LP_DATE 
     , MIN(I.LP_LEDGID) AS MIN_LP_LEDGID 
    FROM 
     YOUR_TABLE I 
    GROUP BY 
     I.LP_DATE) AS I_MIN ON I.LP_DATE = I_MIN.LP_DATE AND I.LP_LEDGID = I_MIN.MIN_LP_LEDGID 
ORDER BY 
    I.LP_DATE 
    , I.LP_LEDGID 
関連する問題