월별 및 연도별 SQL 그룹화
"month-year" - "9-2011"과 같이 "date" 열을 표시하려면 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)
그래서 저는 첫 번째 열의 데이터를 월만 표시하는 것이 아니라 월과 연도를 표시하는 것으로 변경하고 싶습니다.
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-Love에서 언급한 바와 같이 선행 0을 사용하여 캐스팅할 수 있습니다.
GROUP BY
CAST(YEAR(date) AS VARCHAR(4)) + '-' + right('00' + CAST(MONTH(date) AS VARCHAR(2)), 2)
MS SQL 구문처럼 보이기 때문에 MS SQL인 것 같습니다.
같은 걸 넣으셔야 돼요group by
에 있는 것처럼select
.
예를 들어 다음과 같습니다.
Select MONTH(date)+'-'+YEAR(date), ....
...
...
...
group by MONTH(date)+'-'+YEAR(date)
위의 SQL Server 2012는 format() 함수를 사용하는 것이 좋습니다. 보다 단순합니다.
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')
곱셈을 시도하여 년과 월을 한 숫자가 되도록 조정할 수 있습니다.제 테스트에 따르면, 이건 더 빨리 달려요format(date,'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
Yet another alternative:
Select FORMAT(date,'MM.yy')
...
...
group by FORMAT(date,'MM.yy')
내가 제대로 이해했다면.요청에 따라 결과를 그룹화하려면 Group By 절이 선택 문장과 동일한 식이어야 합니다.
GROUP BY MONTH(date) + '.' + YEAR(date)
날짜를 "month-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)
마리아를 위해서DB:
SELECT DATE_FORMAT(date, '%m-%Y')
FROM [Order]
GROUP BY
DATE_FORMAT(date, '%m-%Y')
링크: https://mariadb.com/kb/en/library/date_format/
postgresql에서는 날짜 형식 함수(to_char)와 날짜별 그룹화를 사용하여 유사한 쿼리를 작성할 수 있습니다.
SELECT to_char (datum, 'MM-YYYY') AS mjesec
FROM test
GROUP BY datum
ORDER BY datum;
SQL-Server에서도 그런 일이 가능하겠지요?
몇 년이 지난 후에도, 그것은 여전히 나에게 문제가 되었다.이 포럼에서는 2012년 이전 SQL Server에 적합한 솔루션을 찾을 수 없었기 때문에 이 해결 방법을 제안합니다.ORDER BY
절:
SELECT
CONVERT(DATE, CAST(DAY(0) AS NVARCHAR) + '/' +
CAST(MONTH(GETDATE()) AS NVARCHAR) + '/' +
CAST(YEAR(GETDATE()) AS NVARCHAR), 105)
그 결과:
2022-08-01
확실히, 의 교환을 실시합니다.GETDATE()
관련 분야와 함께.누군가에게 도움이 되었으면 좋겠어요.
datetime 데이터 유형의 필드를 유지하려면 다음을 사용하십시오.
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)
또한 시간, 일, 주, 연도별로 그룹으로 쉽게 변경할 수 있습니다.
누군가에게 도움이 됐으면 좋겠는데
안부 전해 주세요!
언급URL : https://stackoverflow.com/questions/5406170/sql-grouping-by-month-and-year
'source' 카테고리의 다른 글
WPF와 Silverlight의 비교 (0) | 2023.04.19 |
---|---|
Objective-C에서 딜러를 작성하려면 어떻게 해야 합니까? (0) | 2023.04.19 |
Excel 어레이에 논리 OR을 적용하는 방법 (0) | 2023.04.14 |
Windows XP 이후의 Windows:창을 표시하지 않고 백그라운드에서 배치 파일을 실행하려면 어떻게 해야 합니까? (0) | 2023.04.14 |
Excel에서 셀의 첫 번째 문자를 다른 셀과 결합하려면 어떻게 해야 합니까? (0) | 2023.04.14 |