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

Hybrid View

  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,
    non ho creato io la tabella e non posso toccarla..
    Ho ripristinato il Group by e l'ultima versione della query è questa.
    codice:
     
    select  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  DATEname (month,convert(date,datf,105))  order by datepart(mm,CONVERT(date,DATF,105))
    Questo è l'errore che ottengo
    Column 'MOVIMENTI.DATF' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

    Grazie cmq

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.