첨부 한 그림 처럼 저장된 리스트 가 있습니다.
1.
국가, 도시, 구, 동 까지 그룹으로 묶고 F_TYPE 이 대상, 비대상 각각의 개수 를 구하려고 합니다.
비대상 으로 입력된 정보가 없으면 0 이 출력 되어야 합니다.
대상 카운트
비대상 카운트
2.
국가, 도시, 구, 동 까지 그룹으로 묶고 F_TYPE 이 대상, 비대상 각각의 개수 를 구하려고 합니다.
비대상 으로 입력된 정보가 없으면 0 이 출력 되어야 합니다.
여기에 조건이 있습니다.
K_DATE 가 입력된 대상 카운트
K_DATE 가 입력되지 않은 대상 카운트
결과 1
한국 >서울>안국동>대상 2
한국 >서울>안국동>비대상1
한국>부산>동래구>동래동>대상2
한국>부산>동래구>동래동>비대상0
한국>부산>서구>남포동>대상1
한국>부산>서구>남포동>비대상0
일본>신주쿠>신주구>신주1동>대상2
일본>신주쿠>신주구>신주1동>비대상1
결과 2
한국 >서울>안국동>대상 2
한국 >서울>안국동>비대상 0
한국>부산>동래구>동래동>대상 1
한국>부산>동래구>동래동>비대상 0
한국>부산>서구>남포동>대상 0
한국>부산>서구>남포동>비대상 0
일본>신주쿠>신주구>신주1동>대상 0
일본>신주쿠>신주구>신주1동>비대상 0
한국 >서울>안국동> 1월 대상 2>비대상1>대상2>비대상0 > 2월 대상 0>비대상0>대상0>비대상0 ~ 12월~
그리고 다시 C_DATE 로 1월 부터~ 12월 로 구분 하고 싶습니다.
이렇게 하나의 쿼리로 만들고 싶은데요.
멍해져서 보고만 있습니다.
고수님의 도움좀 부탁 합니다.
/****** Object: Table [dbo].[CHECK_GOODS] Script Date: 05/27/2014 12:29:58 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
SET ANSI_PADDING ON
GO
CREATE TABLE [dbo].[CHECK_GOODS](
[COUNTRY] [varchar](50) NOT NULL,
[CITY] [varchar](50) NOT NULL,
[GU] [varchar](50) NOT NULL,
[DONG] [varchar](50) NOT NULL,
[F_TYPE] [varchar](50) NOT NULL,
[C_DATE] [datetime] NOT NULL,
[K_DATE] [datetime] NULL
) ON [PRIMARY]
GO
SET ANSI_PADDING OFF
GO
INSERT INTO CHECK_GOODS(COUNTRY, CITY, GU, DONG, F_TYPE, C_DATE, K_DATE) VALUES ('한국', '서울', '종로구', '안국동', '대상', '2014-01-04', '2014-03-15')
INSERT INTO CHECK_GOODS(COUNTRY, CITY, GU, DONG, F_TYPE, C_DATE, K_DATE) VALUES ('한국', '서울', '종로구', '안국동', '대상', '2014-01-04', '2014-03-15')
INSERT INTO CHECK_GOODS(COUNTRY, CITY, GU, DONG, F_TYPE, C_DATE) VALUES ('한국', '서울', '종로구', '안국동', '비대상', '2014-02-15')
INSERT INTO CHECK_GOODS(COUNTRY, CITY, GU, DONG, F_TYPE, C_DATE, K_DATE) VALUES ('한국', '부산', '동래구', '동래동', '대상', '2014-01-15', '2014-03-15')
INSERT INTO CHECK_GOODS(COUNTRY, CITY, GU, DONG, F_TYPE, C_DATE) VALUES ('한국', '부산', '동래구', '동래동', '대상', '2014-01-15')
INSERT INTO CHECK_GOODS(COUNTRY, CITY, GU, DONG, F_TYPE, C_DATE) VALUES ('한국', '부산', '서구', '남포동', '대상', '2014-01-12')
INSERT INTO CHECK_GOODS(COUNTRY, CITY, GU, DONG, F_TYPE, C_DATE) VALUES ('일본', '신주쿠', '신주구', '신주1동', '대상', '2014-03-01')
INSERT INTO CHECK_GOODS(COUNTRY, CITY, GU, DONG, F_TYPE, C_DATE) VALUES ('일본', '신주쿠', '신주구', '신주1동', '비대상', '2014-03-01')
INSERT INTO CHECK_GOODS(COUNTRY, CITY, GU, DONG, F_TYPE, C_DATE) VALUES ('일본', '신주쿠', '신주구', '신주1동', '대상', '2014-03-01')
안녕하세요!
아래 쿼리 활용해보시기 바랍니다.
감사합니다.
SELECT
COUNTRY
, CITY
, GU
, DONG
, SUM(CASE WHEN F_TYPE = '비대상' AND C_DATE >='2014-01-01' AND C_DATE < '2014-02-01' THEN 1 ELSE 0 END) AS 비대상_전체_1월
, SUM(CASE WHEN F_TYPE = '대상' AND C_DATE >='2014-01-01' AND C_DATE < '2014-02-01' THEN 1 ELSE 0 END) AS 대상_전체_1월
, SUM(CASE WHEN F_TYPE = '비대상' AND C_DATE >='2014-01-01' AND C_DATE < '2014-02-01' AND K_DATE IS NOT NULL THEN 1 ELSE 0 END) AS 비대상_K_DATE_NOTNULL_1월
, SUM(CASE WHEN F_TYPE = '대상' AND C_DATE >='2014-01-01' AND C_DATE < '2014-02-01' AND K_DATE IS NOT NULL THEN 1 ELSE 0 END) AS 대상_K_DATE_NOTNULL_1월
, SUM(CASE WHEN F_TYPE = '비대상' AND C_DATE >='2014-01-01' AND C_DATE < '2014-02-01' AND K_DATE IS NULL THEN 1 ELSE 0 END) AS 비대상_K_DATE_NULL_1월
, SUM(CASE WHEN F_TYPE = '대상' AND C_DATE >='2014-01-01' AND C_DATE < '2014-02-01' AND K_DATE IS NULL THEN 1 ELSE 0 END) AS 대상_K_DATE_NULL_1월
FROM [CHECK_GOODS]
GROUP BY COUNTRY
, CITY
, GU
, DONG
ORDER BY COUNTRY
, CITY
, GU
, DONG