2017-03-14 9 views
2

私は今四半期1,2,3および4で結果を照会できるかどうか疑問に思っていました。 今年は2017 )例えば、次のように:MySQLは現在の年に1,2,3,4を取得します

╔═══════════╦════════╗════════╗════════╗ 
║  Q1 ║ Q2 ║ Q3 ║ Q4 ║ 
╠═══════════╬════════╣════════║════════║ 
║ € K54 ║ € K14 ║ € K0 ║ € K0 ║ 
╚═══════════╩════════╝════════╝════════╝ 

そして、これは私が作ったものです今:(それはQ2でQ2に変わるように、このクエリではQ1は、現在あると私はそれらを表示したいといけません。上記の例のように別々です)。

╔══════════════╦ 
║  Q1  ║ 
╠══════════════╬ 
║ € K54  ║ 
╚══════════════╩ 

これは私が作成したクエリです。結果が見つからない場合は€K0が自動的に表示されます。

SELECT IF(SUM(totalExcl) IS NULL,0, 
      CONCAT('€ K', 
       FORMAT((SUM(totalExcl)/1000), 
        0,'nl_NL'))) AS Q1 
FROM 
    ex.ps_order o LEFT JOIN 
    ex.ps_oxo_quotation q ON o.id_order = q.idOrder LEFT JOIN 
    ex.ps_employee e ON q.idEmployee = e.id_employee 
WHERE 
    QUARTER(q.date_add) = QUARTER(UTC_TIMESTAMP()) 
     AND e.lastname IN ('Ver') 

私は以前の四半期クエリと現在の四半期クエリを作成する方法を知っています。しかし、今年のQ1、Q2、Q3、Q4とまったく同じではありません。


は、私は今、結果としてこれを取得してい 、ほぼ満足しています:

このクエリでは
╔═════════╦════════╗════════╗════════╗ 
║ Q1 ║ Q2 ║ Q3 ║ Q4 ║ 
╠═════════╬════════╣════════║════════║ 
║€96086,03║ € 0,00 ║ € 0,00 ║ € 0,00 ║ 
╚═════════╩════════╝════════╝════════╝ 

:(Bennjoe Mordenoのおかげで)それがフォーマットされた取得するには

 SELECT 
CONCAT('€ ',FORMAT(+ CAST(SUM(CASE WHEN QUARTER(q.date_add) = 1 THEN totalExcl ELSE 0 END) AS CHAR(100)), 2, 'nl_NL')) as Q1, 
CONCAT('€ ',FORMAT(+ CAST(SUM(CASE WHEN QUARTER(q.date_add) = 2 THEN totalExcl ELSE 0 END) AS CHAR(100)), 2, 'nl_NL')) as Q2, 
CONCAT('€ ',FORMAT(+ CAST(SUM(CASE WHEN QUARTER(q.date_add) = 3 THEN totalExcl ELSE 0 END) AS CHAR(100)), 2, 'nl_NL')) as Q3, 
CONCAT('€ ',FORMAT(+ CAST(SUM(CASE WHEN QUARTER(q.date_add) = 4 THEN totalExcl ELSE 0 END) as CHAR(100)), 2, 'nl_NL')) as Q4 
    FROM 

これを使用してください:

SELECT 
CONCAT('€ K',FORMAT(+ CAST(SUM(CASE WHEN QUARTER(q.date_add) = 1 THEN totalexcl ELSE 0 END)/1000 AS CHAR(100)), 0, 'nl_NL')) as Q1, 
CONCAT('€ K',FORMAT(+ CAST(SUM(CASE WHEN QUARTER(q.date_add) = 2 THEN totalexcl ELSE 0 END)/1000 AS CHAR(100)), 0, 'nl_NL')) as Q2, 
CONCAT('€ K',FORMAT(+ CAST(SUM(CASE WHEN QUARTER(q.date_add) = 3 THEN totalexcl ELSE 0 END)/1000 AS CHAR(100)), 0, 'nl_NL')) as Q3, 
CONCAT('€ K',FORMAT(+ CAST(SUM(CASE WHEN QUARTER(q.date_add) = 4 THEN totalexcl ELSE 0 END)/1000 AS CHAR(100)), 0, 'nl_NL')) as Q4 
FROM 

結果:

╔═════════╦════════╗════════╗════════╗ 
║ Q1 ║ Q2 ║ Q3 ║ Q4 ║ 
╠═════════╬════════╣════════║════════║ 
║ € K96 ║ € 0 ║ € 0 ║ € 0 ║ 
╚═════════╩════════╝════════╝════════╝ 
+0

愛Unicodeの芸術 – Morgoth

+0

あなただけのクエリのQ2 Q3とQ4の列に文字列 'K' を削除することができます。それは単に「€K」(「€」に変更されます)と連結されて計算された合計(文字列に変換されます)を連結するので、Kを削除するには、連結する前にKを削除するだけです。 –

+0

おっと、私はあなたがそれがフォーマットされたかったことに気付かなかった。それをちょうど1000で割るのであれば、それをこれに変更してください。 CAST(SUM(Q1.d))= 1 THQ totalexcl ELSE 0 END)/ 1000 AS CHAR(100))Q1 –

答えて

3

あなたはケースを使用することができるとき

SELECT 
'€ K' + CAST(SUM(CASE WHEN QUARTER(q.date_add)= 1 THEN totalexcl ELSE 0 END) AS VARCHAR(100)) as Q1, 
'€ K' + CAST(SUM(CASE WHEN QUARTER(q.date_add) = 2 THEN totalexcl ELSE 0 END) AS VARCHAR(100)) as Q2, 
'€ K' + CAST(SUM(CASE WHEN QUARTER(q.date_add)= 3 THEN totalexcl ELSE 0 END) AS VARCHAR(100)) as Q3, 
'€ K' + CAST(SUM(CASE WHEN QUARTER(q.date_add)= 4 THEN totalexcl ELSE 0 END) as VARCHAR(100)) as Q4 
FROM 
    ex.ps_order o LEFT JOIN 
    ex.ps_oxo_quotation q ON o.id_order = q.idOrder LEFT JOIN 
    ex.ps_employee e ON q.idEmployee = e.id_employee 
    WHERE e.lastname IN ('Ver') 
+0

このエラーが発生します。エラーコード:1064. SQL構文にエラーがあります。 'VARCHAR(100)の近くで使用する正しい構文については、MariaDBサーバーのバージョンに対応するマニュアルをチェックして、Q1、' K '+ CAST(SUM(四半期= 2の場合はtotalexcl EL' :予期しない 'VARCHAR'(varchar)) – Deniz

+0

変更されたVARCHARをCHARに固定しましたが、今私はこのエラーコードを取得しています:1054.不明な列 'フィールドリスト'の '四半期' – Deniz

+0

四半期をQUARTER(q。 date_add)@Deniz –

関連する問題