2017-05-16 1 views
0

저는 SQL Server 세계에 처음 왔습니다. 나는 아래 테이블을 가지고있다 :하루를 기준으로 예상 개수를 계산하는 방법은 무엇입니까?

alert_id | create_date | Status 
---------+-------------+--------- 
1231  | 4/15/2017 | Open 
1232  | 4/15/2017 | Open 
1234  | 4/15/2017 | Closed 
1235  | 4/16/2017 | Open 

이 경고는 모두 30 일 후에 마감해야한다. 지난 30 일 동안 열린 알림의 수를 보여주는 예측 보고서를 받아야합니다.

나는 출력이 2 열 것 선택 쿼리를 작성하고 싶습니다. 첫 번째는 날짜이고 두 번째는 카운트입니다. 날짜 열에는 다음 30 일 동안의 모든 날짜가 표시되어야하며 기간 열에는 해당 날짜에 만료 될 레코드 수가 표시되어야합니다. 아래와 같은 것이 효과가 있습니다. 도와주세요.

date  | Count 
----------+--------- 
5/15/2017 | 2 
5/16/2017 | 3 
5/17/2017 | 0 
5/18/2017 | 0 
. 
. 
. 
6/14/2017 | 0 
+2

? ... 잘못된 태그와 올바른 – scaisEdge

답변

0

이것은 GROUP BY과 날짜 계산을위한 작업입니다. MySQL에서 :

SELECT DATE(create_date) + INTERVAL 30 DAY expire_date, COUNT(*) num 
    FROM tbl 
WHERE status = 'Open' 
GROUP BY DATE(create_date) 

DATE(create_date) + INTERVAL 30 DAY 당신에게 30 일 추가 된 날짜 값을 가져옵니다. 자정립니다 당신의 생성 날짜,의 값을 기준으로

GROUP BY(create_date) 그룹 데이터를.

그리고, COUNT(*) 얼마나 많은 각 그룹의 레코드 당신에게 GROUP BY로 이동합니다. SQL 서버 (MS)

SELECT DATEADD(day, 30, CAST(create_date AS DATE)) expire_date, COUNT(*) num 
    FROM tbl 
WHERE status = 'Open' 
GROUP BY CAST(create_date AS DATE) 

공지의 최신 버전에서

편집는 해당 날짜의 연산은 제조사와 SQL 서버 소프트웨어의 모델 사이에서 변화하십시오. 그렇기 때문에 [oracle] [mysql] [sql-server]와 같은 태그를 두 개 이상 사용할 때 Stack Overflow 사용자가 주석을 쓴다.

쿨! 요약 쿼리라고도하는 집계 쿼리를 읽어야합니다.

당신은 그들에 의해 0으로 실종 날짜를 얻을하지 않을거야. SQL로하는 것이 꽤 어렵습니다. 당신은 SQL 서버 또는 MySQL을 사용하는

+0

내가 SQL 서버를 사용하고 제거합니다. 위의 방법을 시도하면 " 'DATE'는 인식 할 수없는 기본 제공 함수 이름이 아닙니다." – Monty

+0

아래의 쿼리는 "date"열에 대해 원하는 출력을 제공하지만 create_date와 함께이 열을 두 번째 열의 필수 데이터를 검색하는 방법을 모르겠습니다.
()는 (d, 숫자를 GETDATE - 1) DATEADD 선택 master..spt_values에서 [일자]로서 여기서 TYPE = 'P'및 1 내지 30 사이의 수; – Monty

+0

도움을 주시면 감사하겠습니다. – Monty

관련 문제