2016-04-29 16 views
1

によっては、私は、次のSQLクエリを持っています。グループ化されたクーポンコードと関連する値のリストが必要です。MySQLのグループNULL値

誰も私の結果に "no code"という値が見つからない理由を知っていますか?

ありがとうございました。

+0

結果は何ですか?クーポンに同じヌル値を返していますか? – sravs

+0

GROUP BY句を省略すると、クーポンコードに「コードなし」と表示されますか?この結果セットにNULL値がない可能性があります。 –

+0

結果セットに「コードなし」はありません。 group by節を削除すると、 "no code"という行が1行表示されますが、他の列はすべてnullです。 – Torben

答えて

0

私の勘では、あなただけの結果セットから省略されているsfo.status = NULLとレコードのcoupon_codeためNULL値を、持っているということです。

次のクエリを試してみてください:COALESCE式はCASE式の構文上のショートカットですので

SELECT date_format(sfo.shipping_arrival_date,"%m.%Y") AS Month, 
     date_format(sfo.shipping_arrival_date,"%v") AS Week, 
     date_format(sfo.shipping_arrival_date,"%d.%m.%Y") AS Shipping Day, 
     CASE 
      WHEN sfo.coupon_code IS NOT NULL THEN sfo.coupon_code 
      ELSE 'no Code' 
     END as Coupon, 
     sfo.coupon_rule_name, 
     sfo.grand_total AS Endsumme, 
     sfo.base_subtotal + sfo.shipping_incl_tax AS Sum_Incl_Shipping, 
     sfo.discount_amount, 
     count(sfo.entity_id) AS uses 
FROM sales_flat_order AS sfo 
WHERE sfo.status <> 'canceled' OR sfo.status IS NULL 
GROUP BY Coupon 
ORDER BY sfo.shipping_arrival_date DESC 
0

私は... ... CASEの代わりに

... 
COALESCE(sfo.coupon_code,'no Code') AS Coupon 
... 
GROUP BY Coupon 

をCOALESCEを使用したいですそれははるかに明確で簡潔です