복붙노트

[SQL] SQL은 월 및 연도에 의해 그룹화

SQL

SQL은 월 및 연도에 의해 그룹화

- "9-2011" "월 - 년"나는 확실히 나는이 같은 '날짜'열을 표시하기 위해 다음과 같은 SQL 쿼리로 작성해야하는지 모르겠어요.

SELECT MONTH(date) + '.' + YEAR(date) AS Mjesec, SUM(marketingExpense) AS SumaMarketing, SUM(revenue) AS SumaZarada 
FROM [Order]
WHERE (idCustomer = 1) AND (date BETWEEN '2001-11-3' AND '2011-11-3')
GROUP BY MONTH(date), YEAR(date)

그래서, 내가 뭘 원하는 년, 월 대신만을 보여주는 달을 보여주기 위해 첫 번째 열에서 데이터를 변경하는 것입니다.

해결법

  1. ==============================

    1.

    SELECT CAST(MONTH(date) AS VARCHAR(2)) + '-' + CAST(YEAR(date) AS VARCHAR(4)) AS Mjesec, SUM(marketingExpense) AS SumaMarketing, SUM(revenue) AS SumaZarada 
    FROM [Order]
    WHERE (idCustomer = 1) AND (date BETWEEN '2001-11-3' AND '2011-11-3')
    GROUP BY CAST(MONTH(date) AS VARCHAR(2)) + '-' + CAST(YEAR(date) AS VARCHAR(4))
    

    또는 @로 (40) - 사랑은 당신이 선두에 제로 캐스트 할 수 있습니다 언급 :

    GROUP BY 
      CAST(YEAR(date) AS VARCHAR(4)) + '-' + right('00' + CAST(MONTH(date) AS VARCHAR(2)), 2) 
    
  2. ==============================

    2.이 MS SQL 구문처럼 보이는 I 추측은 MS SQL이다.

    이 MS SQL 구문처럼 보이는 I 추측은 MS SQL이다.

    당신은 선택 예에서와 같이 그룹 라인에서 같은 일을 놓아야합니다 그래서 :

    Select MONTH(date)+'-'+YEAR(date), ....
    ...
    ...
    ...
    group by MONTH(date)+'-'+YEAR(date)
    
  3. ==============================

    3.만약 내가 제대로 이해. 그룹 위해서 요청, 귀하의 그룹에 의해 절과 같은 결과가 당신의 선택 성명과 같은 표현을 가질 필요가있다.

    만약 내가 제대로 이해. 그룹 위해서 요청, 귀하의 그룹에 의해 절과 같은 결과가 당신의 선택 성명과 같은 표현을 가질 필요가있다.

    GROUP BY MONTH(date) + '.' + YEAR(date)
    

    은 "월 - 일"형식의 변화에 ​​따라 날짜 표시하려면 '를.' 에 '-' 전체 구문은 다음과 같이 될 것이다.

    SELECT MONTH(date) + '-' + YEAR(date) AS Mjesec, SUM(marketingExpense) AS
    SumaMarketing, SUM(revenue) AS SumaZarada 
    FROM [Order]
    WHERE (idCustomer = 1) AND (date BETWEEN '2001-11-3' AND '2011-11-3')
    GROUP BY MONTH(date) + '.' + YEAR(date)
    
  4. ==============================

    4.SQL 서버 2012 이상, 좀 더 단순화 사용 형식 () 함수를 선호합니다.

    SQL 서버 2012 이상, 좀 더 단순화 사용 형식 () 함수를 선호합니다.

    SELECT format(date,'MM.yyyy') AS Mjesec, SUM(marketingExpense) AS SumaMarketing, SUM(revenue) AS SumaZarada 
    FROM [Order]
    WHERE (idCustomer = 1) AND (date BETWEEN '2001-11-3' AND '2011-11-3')
    GROUP BY format(date,'MM.yyyy')
    
  5. ==============================

    5.PostgreSQL의에서 나는 날짜 포맷 기능 (TO_CHAR)와 날짜에 의해 단지 그룹화와 유사한 쿼리를 작성할 수 있습니다 :

    PostgreSQL의에서 나는 날짜 포맷 기능 (TO_CHAR)와 날짜에 의해 단지 그룹화와 유사한 쿼리를 작성할 수 있습니다 :

    SELECT to_char (datum, 'MM-YYYY') AS mjesec 
    FROM test 
    GROUP BY datum 
    ORDER BY datum;
    

    이러한 점은 역시 SQL-Server와 확실히 불가능이다?

  6. ==============================

    6.당신이 할 수있는 mariaDB의 경우 :

    당신이 할 수있는 mariaDB의 경우 :

    SELECT DATE_FORMAT(date, '%m-%Y')
    FROM [Order]
    GROUP BY 
    DATE_FORMAT(date, '%m-%Y')
    

    링크 : https://mariadb.com/kb/en/library/date_format/

  7. ==============================

    7.그들은 하나 개의 숫자가 될 것이다, 그래서 당신은 연도와 월 조정 곱셈을 시도 할 수 있습니다. 이것은 내 테스트에서 훨씬 빠르게 포맷 (날짜, 'yyyy.MM')에 비해 실행됩니다. 나는 목적을 정렬 한 달 전에 한 해를 보내고 선호합니다. 코드는 MS SQL Server Express의 버전 12.0에서 만들었습니다.

    그들은 하나 개의 숫자가 될 것이다, 그래서 당신은 연도와 월 조정 곱셈을 시도 할 수 있습니다. 이것은 내 테스트에서 훨씬 빠르게 포맷 (날짜, 'yyyy.MM')에 비해 실행됩니다. 나는 목적을 정렬 한 달 전에 한 해를 보내고 선호합니다. 코드는 MS SQL Server Express의 버전 12.0에서 만들었습니다.

    SELECT (YEAR(Date) * 100) + MONTH(Date) AS yyyyMM
    FROM [Order]
    ...
    GROUP BY (YEAR(Date) * 100) + MONTH(Date)
    ORDER BY yyyyMM
    
  8. ==============================

    8.

    Yet another alternative: 
    
    Select FORMAT(date,'MM.yy')
    ...
    ...
    group by FORMAT(date,'MM.yy')
    
  9. ==============================

    9.당신이 날짜 시간 데이터 형식의 필드를 가지고 유지하려면이를 사용해보십시오 :

    당신이 날짜 시간 데이터 형식의 필드를 가지고 유지하려면이를 사용해보십시오 :

    SELECT DATEADD(MONTH, DATEDIFF(MONTH, 0, o.[date]), 0) AS Mjesec, SUM(marketingExpense) AS SumaMarketing, SUM(revenue) AS SumaZarada 
    FROM [Order] o
    WHERE (idCustomer = 1) AND (o.[date] BETWEEN '2001-11-3' AND '2011-11-3')
    GROUP BY DATEADD(MONTH, DATEDIFF(MONTH, 0, o.[date]), 0)
    

    그것은 그것 또한 쉽게 시간, 일, 주, 년으로 그룹에 변화 ... 나는 그것이 사람에게 사용의 희망,

    문안 인사!

  10. from https://stackoverflow.com/questions/5406170/sql-grouping-by-month-and-year by cc-by-sa and MIT license