본문 바로가기
MySql

MySQL Sum 및 Case를 사용하는 MySQL

by 베이스 공부 2020. 12. 19.
반응형

MySQL 데이터베이스에 연결하는 ASP.NET을 사용하여 GridView를 만들려고합니다. 데이터는 아래와 같이 나타납니다.

BusinessUnit    OrderDate      Canceled
UnitA           1/15/2013          N
UnitA           10/1/2013          N
UnitB           10/15/2013         N
UnitB           10/22/2013         N
UnitB           10/22/2013         N

위의 기록을 바탕으로 결과를 아래와 같이 표시하고 싶습니다.

BusinessUnit  TodaysOrders   ThisMonthsOrders  ThisYearsOrders
UnitA              0                1                2
UnitB              2                3                3

내 현재 코드는 다음과 같습니다. 오류가 발생합니다 (DatabaseName.sum에 대한 내용이 존재하지 않습니다. Function Name Parsing and Resolution '섹션 ...)

Select  
    SUM (CASE WHEN (OrderDate)=DATE(NOW()) THEN 1 ELSE 0 END) AS TodaysOrders,
    SUM (CASE WHEN YEAR(OrderDate) = YEAR(CURDATE()) AND MONTH(OrderDate) = MONTH(CURDATE()) THEN 1 ELSE 0 END) AS ThisMonthsOrders,
    SUM (CASE WHEN YEAR(main_order_managers.creation_date) = YEAR(CURDATE()) THEN 1 ELSE 0 END) AS ThisYearsOrders 

코드 계속

FROM OrderTable WHERE OrderTable.Canceled. <> 'Y';

Sum Case가 여기서 가장 잘 사용됩니까?

 

해결 방법

 

함수 이름과 괄호 사이의 공백으로 인해 오류가 발생했습니다.

SUM (CASE WHEN ...
   ^^


시험

SELECT BusinessUnit,
       SUM(CASE WHEN OrderDate = CURDATE() THEN 1 ELSE 0 END) TodaysOrders,
       SUM(CASE WHEN DATE_FORMAT(OrderDate, '%Y%m') = DATE_FORMAT(CURDATE(), '%Y%m') THEN 1 ELSE 0 END) ThisMonthsOrders,
       SUM(CASE WHEN YEAR(OrderDate) = YEAR(CURDATE()) THEN 1 ELSE 0 END) ThisYearsOrders
  FROM OrderTable
 WHERE Canceled <> 'Y'
 GROUP BY BusinessUnit


 

참조 페이지 https://stackoverflow.com/questions/19529864

 

 

반응형

댓글