2017-10-16 8 views
0

J'ai un rapport qui renvoie nombre de portes vendues en un mois à partir de 2 emplacements. Le mois est affiché comme une valeur 1-12 .... Je voudrais revenir 1-Jan, 2-Feb etc.Comment écrire une expression qui ajoute le mois du texte à la valeur numérique?

table

EDIT

J'utilise: datepart(MONTH, DeFactoUser.F_ST_Transaction.STTR_DATE) pour obtenir le mois nombre, j'ai essayé: datepart(MONTH, DeFactoUser.F_ST_Transaction.STTR_DATE) + '-' + datename(MONTH, DeFactoUser.F_ST_Transaction.STTR_DATE) pour obtenir le nom ajouté au numéro. Je reçois une erreur Conversion failed when converting the nvarchar value 'September' to data type int.

faire quelque chose de stupide .... Il est évident que tous les indices serait bon.

+0

@GarethD lié à une solution assez ancien. Je pense OP est en 2012 –

+0

Si 2012+ Format (datefromparts (1, [mois], 1), 'M-mmm) –

+0

@JohnCappelletti voir modifier – Neal1581

Répondre

1

Vous pouvez utiliser une expression de cas:

SELECT CASE WHEN [Month] = 1 THEN '1-Jan' 
WHEN [Month] = 2 THEN '2-Feb' 
WHEN [Month] = 3 THEN '3-Mar' 
... 
END AS [MonthName] 

Alternative utilise DATENAME:

SELECT CAST(MONTH(1) AS NVARCHAR(2))+'-'+LEFT(UPPER(DATENAME(MONTH,MONTH(1))),3) 

Cela a été posée: Convert Month Number to Month Name Function in SQL

Si vous ne voulez pas d'expression de casse.

1

essayez ceci:

SELECT CAST(MONTH(GETDATE()) AS nvarchar(2)) +'-'+ CONVERT(varchar(3), GETDATE(), 100) 
2

Si votre colonne de mois est une date que vous pouvez utiliser la fonction DATENAME.

Si c'est juste un nombre, vous pouvez toujours utiliser DATENAME mais simuler la date avec DATEFROMPARTS par ex.

SELECT datename(MONTH,datefromparts(2017,1,1)) 

puis juste concaténer votre numéro et le nom avec

concat(cast(yournum AS varchar(2)),'-',datename(MONTH,datefromparts(2017,1,1)))