J'ai la requête suivante
SELECT DISTINCT
pt.incentive_marketing,
pt.incentive_channel,
pt.incentive_advertising
FROM test.pricing pt
WHERE pt.contract_id = 90000
group by 1,2,3
order by pt.incentive_marketing;
La requête ci-dessus renvoie le o/p comme indiqué dans l'image jointe
Cependant, je souhaite remplacer toutes les valeurs nulles par 0 avec COALESCE Merci de me faire savoir comment cela peut être réalisé dans la requête SELECT ci-dessus
Maintenant, j'ai également modifié la requête en utilisant coalesce comme ci-dessous
SELECT
COALESCE( pt.incentive_marketing, '0' ),
COALESCE(pt.incentive_channel,'0'),
COALESCE( pt.incentive_advertising,'0')
FROM test.pricing pt
WHERE pt.contract_id = 90000
group by 1,2,3
dont le résultat est tel qu'attaché dans l'image 2.
Je reçois toujours une ligne avec des valeurs vides
Vous pouvez utiliser COALESCE
avec NULLIF
pour une solution courte et efficace:
COALESCE( NULLIF(yourField,'') , '0' )
La fonction NULLIF
retournera null si votre champ est égal à la deuxième valeur (''
dans ce cas, rendant la fonction COALESCE
pleinement opérationnelle dans tous les cas:
QUERY | RESULT
---------------------------------------------------------------------------------
SELECT COALESCE(NULLIF(null ,''),'0') | '0'
SELECT COALESCE(NULLIF('' ,''),'0') | '0'
SELECT COALESCE(NULLIF('foo' ,''),'0') | 'foo'
Si vous utilisez 0
et une chaîne vide ''
et null
pour indiquer que vous avez un problème de données. Il suffit de mettre à jour les colonnes et de corriger votre schéma.
UPDATE pt.incentive_channel
SET pt.incentive_marketing = NULL
WHERE pt.incentive_marketing = '';
UPDATE pt.incentive_channel
SET pt.incentive_advertising = NULL
WHERE pt.incentive_marketing = '';
UPDATE pt.incentive_channel
SET pt.incentive_channel = NULL
WHERE pt.incentive_marketing = '';
Cela facilitera considérablement l’adhésion et la sélection.