2017-04-04 1 views
0

J'essaie de combiner l'année en cours sous la forme AAAA avec la colonne monthy de la mois.T-SQL: combiner l'année en cours et le mois à partir de la colonne mois

monthy  monthsname 
------------------------ 
1   January 
2   February 
3   March 
4   April 
5   May 
6   June 
7   July 
8   August 
9   September 
10   October 
11   November 
12   December 

Voici la sortie que je reçois:

monthy monthsname month_number 
------------------------------------ 
    5   May   NULL 
    6   June   NULL 
    8   August   NULL 
    9   September  NULL 
10   October  NULL 
11   November  NULL 
    1   January  201701 
    2   February  201702 
    3   March   201703 
    4   April   201704 
    7   July   201707 
12   December  201712 

Au lieu de month_number étant nulle, je tente de le faire:

isnull(ss.month_number, cast(convert(varchar(4), DATEPART(year, getdate())) as int) + right('0-- ' + cast(convert(varchar(2), monthy) as int), 2)) 

Je ne reçois pas la sortie droite: Je veux quelque chose comme 201705 pour l'enregistrement de la première rangée pour month_number

Répondre

1

En fonction de votre type de données, vous pouvez utiliser cette fonction, mais il s'agit simplement de l'année * 100 plus le numéro du mois pour obtenir la représentation en nombre entier du nombre que vous essayez de créer.

ISNULL(month_number,YEAR(GETDATE())*100+monthy) 
+0

Merci Anthony, exactement ce que je avais besoin !!!! tu gères! – user396123

+0

@ user396123 Je vais upvote pour vous, mais vous seul pouvez ACCEPTER la réponse –

0

Pouvez-vous essayer ceci:

SELECT 
    CONVERT(VARCHAR(4),DATEPART(YEAR, GETDATE())) + --year 
    ( 
     REPLICATE('0', 2 - LEN(CONVERT(VARCHAR(2), monthy))) + 
     CONVERT(VARCHAR(2), monthy) --monthy 
    )