2017-02-22 4 views
0

Tableau 1 a la date de la colonne, la valeur Tableau 2 a monthnumber, monthname (c.-à-1-12 pour le nombre et janvier à décembre) données exemplesEn utilisant une condition pour une jointure croisée sur les mois

| Tableau 1 |

|ColDate | value| 
|1-nov-2016 | 6| 

Sortie prévue

ColDate | value | month | monthnumber 
1-nov-2016 | 6 | Nov | 11 
1-nov-2016 | 0 | Dec |12 

..... 0 pour tous les autres mois sauf nov

je cross join entre le tableau 1 et le tableau 2, mais il donne une sortie comme

1-nov-2016 | 6 | Nov | 11 
1-nov-2016 | 6 | Dec |12 

..... 6 pour tous les autres mois mais devrait être 0 sauf novembre

Comment faire cela?

+1

s'il vous plaît modifier votre question avec le format approprié ... http://stackoverflow.com/editing-help – Darshak

Répondre

0

Essayez ceci,

DECLARE @TB1 TABLE (COLDATE VARCHAR(20),VALUE INT) 
INSERT INTO @TB1 
SELECT '1-NOV-2016',6 

DECLARE @TB2 TABLE(MONTH VARCHAR(10),MONTHNUMBER INT) 
INSERT INTO @TB2 
SELECT 'NOV',11 
UNION ALL 
SELECT 'DEC',12 

SELECT COLDATE 
     ,CASE WHEN MONTHNUMBER=11 THEN VALUE ELSE 0 END VALUE 
     ,MONTH 
     ,MONTHNUMBER 
FROM @TB1 
CROSS JOIN @TB2 

Résultat:

enter image description here