Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    SQL 2012- Raggruppare per mese in ordine cronologico

    Ciao,premesso che il campo datf è un varchar
    questa query
    codice:
     
    select  datename(month,CONVERT(date,DATF,105)) as miadata,SUM(CAST(NETTO AS INT))  AS quanti from MOVIMENTI where  (CAUS IN ('01', '02','65')) AND (MOVIMENTI.SMAL = '900000.0002') group by DATEname (month,convert(date,datf,105)) order by datename (month,convert(date,datf,105)) 
     
     
    
    funziona perfettamente tranne l'ordine di ragruppamento perché mi ritrovo una cosa del genere

    -------
    April
    Febrary
    January etc etc

    ho provato con questa modifica sull'order by ma ho un errore

    order by datepart(mm,CONVERT(date,DATF,105))desc




    -----------
    Invece vorrei Gennaio - Febbra.... et et
    Grazie

  2. #2
    se non ci dici l'errore...

  3. #3
    Hai ragione anche te -)
    Questo se aggiungo
    -------------------
    order by datepart(mm,CONVERT(date,DATF,105)) desc
    ---------------Column "MOVIMENTI.DATF" is invalid in the ORDER BY clause because it is not contained in either an aggregate function or the GROUP BY clause.

  4. #4
    il messaggio di errore contiene già la soluzione aggiungi month(DATF) nella select e usalo nella order by

    dai che ce la fai

  5. #5
    Non ho la possibiltà di provarlo, dunque non so se funziona, ma io nella clausula 'Order by' toglierei il datename del mese e lascerei solo la conversione da stringa a data, Order by Convert(date, datf, 105)


  6. #6
    Grazie per l'incoraggiamento,
    ma la tua soluzione non riesco a scriverla.
    Ho provato questa cosa, pare funzionare per l'ordine ma ho perso il raggruppamento dei totali per mese..


    codice:
    select distinct datepart(mm,CONVERT(date,DATF,105)) as mese, datename(month,CONVERT(date,DATF,105)) as miadata,SUM(CAST(NETTO AS INT)) AS quanti from MOVIMENTI where (CAUS IN ('01', '02','65')) AND (MOVIMENTI.SMAL = '900000.0002') group by datf order by datepart(mm,CONVERT(date,DATF,105)

  7. #7
    non vedo month(DATF) .... leggi bene il mio suggerimento (DATF come è scritto? non è un datetime?)

  8. #8
    datf è un varchar

  9. #9
    ok, allora metti datepart(mm,CONVERT(date,DATF,105) anche nella group by (anche se ti converrebbe darci un taglio netto e trasformare DATF in DateTime già sul db )

  10. #10
    Ciao,
    purtroppo la tabella non è stata fatta da me e non posso toccare nulla ..

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.