Ordenar os dados em Colunas e não em Linha

26/04/2023

0

SQL

Bom Dia Pessoal

Nesta consulta abaixo como podemos melhora-la para que, os meses vem em coluna e não em linha conforme esta no momento.

SELECT SUBSTRING(UD_DATA, 1, 4) AS ANO
,SUBSTRING(UD_DATA, 5, 2) AS MES
,UD_ASSUNTO
,X5_DESCRI AS DESC_ASSUNTO
,COUNT(CASE WHEN (MONTH(UD_DATA) = 1) THEN UD_ASSUNTO ELSE 0 END) TOTAL_REGISTRO

FROM SUD010(NOLOCK) SUD,SX5010

WHERE SUD.D_E_L_E_T_ = ''
AND X5_CHAVE = UD_ASSUNTO
AND X5_TABELA ='T1'
AND X5_FILIAL = UD_FILORI
AND UD_DATA >= '20210101'
AND UD_DATA <= '20231231'

GROUP BY
SUBSTRING(UD_DATA, 1, 4)
,SUBSTRING(UD_DATA, 5, 2)
,UD_ASSUNTO
, X5_DESCRI
ORDER BY 1,2,3
Wanderson Fernandes

Wanderson Fernandes

Responder

Posts

27/04/2023

Arthur Heinrich

Você pode tentar algo mais ou menos assim:

SELECT
  SUBSTRING(UD_DATA, 1, 4) AS ANO,
  UD_ASSUNTO,
  X5_DESCRI AS DESC_ASSUNTO,
  SUM(CASE WHEN (MONTH(UD_DATA) = 1) THEN 1 ELSE 0 END) TOT_MES_01,
  SUM(CASE WHEN (MONTH(UD_DATA) = 2) THEN 1 ELSE 0 END) TOT_MES_02,
  SUM(CASE WHEN (MONTH(UD_DATA) = 3) THEN 1 ELSE 0 END) TOT_MES_03,
  SUM(CASE WHEN (MONTH(UD_DATA) = 4) THEN 1 ELSE 0 END) TOT_MES_04,
  SUM(CASE WHEN (MONTH(UD_DATA) = 5) THEN 1 ELSE 0 END) TOT_MES_05,
  SUM(CASE WHEN (MONTH(UD_DATA) = 6) THEN 1  ELSE 0 END) TOT_MES_06,
  SUM(CASE WHEN (MONTH(UD_DATA) = 7) THEN 1  ELSE 0 END) TOT_MES_07,
  SUM(CASE WHEN (MONTH(UD_DATA) = 8) THEN 1 ELSE 0 END) TOT_MES_08,
  SUM(CASE WHEN (MONTH(UD_DATA) = 9) THEN 1 ELSE 0 END) TOT_MES_09,
  SUM(CASE WHEN (MONTH(UD_DATA) = 10) THEN 1 ELSE 0 END) TOT_MES_10,
  SUM(CASE WHEN (MONTH(UD_DATA) = 11) THEN 1  ELSE 0 END) TOT_MES_11,
  SUM(CASE WHEN (MONTH(UD_DATA) = 12) THEN 1 ELSE 0 END) TOT_MES_12
FROM
  SUD010(NOLOCK) SUD,
  SX5010
WHERE
  SUD.D_E_L_E_T_ = '' AND
  X5_CHAVE = UD_ASSUNTO AND
  X5_TABELA ='T1' AND
  X5_FILIAL = UD_FILORI AND
  UD_DATA >= '20210101' AND
  UD_DATA <= '20231231'
GROUP BY
  SUBSTRING(UD_DATA, 1, 4),
  UD_ASSUNTO,
  X5_DESCRI
ORDER BY 1,2,3

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar