2017-04-10 119 views
0

我在這裏得到的代碼工作並提取正確的數據並對所有表進行正確的計算,但是我想在rendezvous.nordv號碼和'$'號碼前加上'#'符號符號的價格。我發現了一種使用TO_CHAR來添加'$'符號的方法,但我寧願在發出select語句時連接這些符號。如何添加符號到SQL查詢輸出(oracle)

任何幫助表示讚賞。

SELECT rendezvous.nordv, 
     rendezvous.nopatient Numero_patient, 
     rendezvous.noservicessupp Type_Service_Supplementaire, 
     TO_CHAR(SUM(servicessupplementaires.prix), 'L999,999,999.00') AS ss_prix, 
     TO_CHAR(COUNT(rendezvous.noservicessupp) * servicessupplementaires.prix, 'L999,999,999.00') AS Total_Services_Supplementaires, 
     rendezvous.notypeexamen Type_Examen, 
     TO_CHAR(SUM(typeexamen.prix), 'L999,999,999.00') AS examen_prix, 
     TO_CHAR(COUNT(rendezvous.notypeexamen) * typeexamen.prix, 'L999,999,999.00') AS Total_Examen_Clinique, 
     TO_CHAR(CASE WHEN COUNT(rendezvous.noservicessupp) * servicessupplementaires.prix IS NULL THEN COUNT(rendezvous.notypeexamen) * typeexamen.prix 
      WHEN COUNT(rendezvous.notypeexamen) * typeexamen.prix IS NULL THEN COUNT(rendezvous.noservicessupp) * servicessupplementaires.prix 
      ELSE COUNT(rendezvous.noservicessupp) * servicessupplementaires.prix + 
      COUNT(rendezvous.notypeexamen) * typeexamen.prix END, 'L999,999,999.00') AS Addition, 
     TO_CHAR(CASE WHEN TO_CHAR(rendezvous.debutrdv, 'DY','NLS_DATE_LANGUAGE=AMERICAN') NOT IN ('SAT', 'SUN') 
      THEN (CASE WHEN COUNT(rendezvous.noservicessupp) * servicessupplementaires.prix IS NULL THEN COUNT(rendezvous.notypeexamen) * typeexamen.prix 
      WHEN COUNT(rendezvous.notypeexamen) * typeexamen.prix IS NULL THEN COUNT(rendezvous.noservicessupp) * servicessupplementaires.prix 
      ELSE COUNT(rendezvous.noservicessupp) * servicessupplementaires.prix + 
      COUNT(rendezvous.notypeexamen) * typeexamen.prix END) 
      ELSE (CASE WHEN COUNT(rendezvous.noservicessupp) * servicessupplementaires.prix IS NULL THEN COUNT(rendezvous.notypeexamen) * typeexamen.prix 
      WHEN COUNT(rendezvous.notypeexamen) * typeexamen.prix IS NULL THEN COUNT(rendezvous.noservicessupp) * servicessupplementaires.prix 
      ELSE COUNT(rendezvous.noservicessupp) * servicessupplementaires.prix + 
      COUNT(rendezvous.notypeexamen) * typeexamen.prix END) * 1.1 END, 'L999,999,999.00') AS SousTotal, 
     TO_CHAR((1 - patient.couvertureass) * 
      (CASE WHEN TO_CHAR(rendezvous.debutrdv, 'DY','NLS_DATE_LANGUAGE=AMERICAN') NOT IN ('SAT', 'SUN') 
      THEN (CASE WHEN COUNT(rendezvous.noservicessupp) * servicessupplementaires.prix IS NULL THEN COUNT(rendezvous.notypeexamen) * typeexamen.prix 
      WHEN COUNT(rendezvous.notypeexamen) * typeexamen.prix IS NULL THEN COUNT(rendezvous.noservicessupp) * servicessupplementaires.prix 
      ELSE COUNT(rendezvous.noservicessupp) * servicessupplementaires.prix + 
      COUNT(rendezvous.notypeexamen) * typeexamen.prix END) 
      ELSE (CASE WHEN COUNT(rendezvous.noservicessupp) * servicessupplementaires.prix IS NULL THEN COUNT(rendezvous.notypeexamen) * typeexamen.prix 
      WHEN COUNT(rendezvous.notypeexamen) * typeexamen.prix IS NULL THEN COUNT(rendezvous.noservicessupp) * servicessupplementaires.prix 
      ELSE COUNT(rendezvous.noservicessupp) * servicessupplementaires.prix + 
      COUNT(rendezvous.notypeexamen) * typeexamen.prix END) * 1.1 END), 'L999,999,999.00') AS Total_a_payer 
FROM rendezvous 
FULL JOIN servicessupplementaires ON rendezvous.noservicessupp = servicessupplementaires.noservicessupp 
FULL JOIN typeexamen ON rendezvous.notypeexamen = typeexamen.notypeexamen 
FULL JOIN patient ON rendezvous.nopatient = patient.nopatient 
WHERE rendezvous.noservicessupp >= 1 
    OR rendezvous.notypeexamen >= 1 
GROUP BY rendezvous.nopatient, 
     patient.couvertureass, 
     patient.nopatient, 
     servicessupplementaires.prix, 
     rendezvous.noservicessupp, 
     rendezvous.debutrdv, 
     rendezvous.nordv, 
     typeexamen.prix, 
     rendezvous.notypeexamen; 

回答

0

對於#

'#' || rendezvous.nordv 

,或者對於$

'$' || your_column 

TO_CHAR(your_column, 'FM$999,999,999.00') 

,或者,如果NLS_CURRENCY會議對儀表設置爲$

TO_CHAR(your_column, 'FML999,999,999.00') 

FM格式修改抑制任何多餘的空白。

+0

當我添加'#'|| rendezvous.nordv到select語句,它給了我一個錯誤的組。 –

+0

@PhilCharles也可以在GROUP BY子句中進行更改。 – MT0

+0

我試着將rendezvous.nordv改爲'#'|| rendezvous.nordv在組和現在它給了我錯誤「榮軍標識符」 –

0

「當我將'#'|| rendezvous.nordv添加到select語句時,它給了我一個錯誤組。

有趣。這裏是一個簡單的測試用例,它不能證明這種行爲:

SQL> select col1, max(col2) from t23 
    2 group by col1 
    3/

     COL1 MAX(COL2) 
---------- ---------- 
     1   3 
     0   4 

SQL> select '#'||col1 as col1, max(col2) from t23 
    2 group by col1 
    3/

COL1          MAX(COL2) 
----------------------------------------- ---------- 
#1             3 
#0             4 

SQL> 
+0

也許這是因爲我有多個表連接,但是當我這樣做時,它仍然給我一個錯誤「選擇列表與團體不一致「,我完全如上所述?? –