2016-09-22 2 views
-1

데이터 형식의 쿼리가 있습니다. 나는 그것을 정수로 변환하려고 시도하지만 그것은 도움이되지 않는다. 행에 NULL이 있기 때문에 그룹화 할 수 없다.DB2 그룹 by NULL SQL 오류 [22007]

SELECT t."Reception Date", CASE WHEN t."DT" IS NULL THEN 100 
           ELSE 100500 
          END AS "GG" 
FROM fit t 
GROUP BY t."Reception Date", CASE WHEN t."DT" IS NULL THEN 100 
            ELSE 100500 
          END 

가 나는 그룹이 원하는 많은 행을 가지고 있지만,

오류

을 가지고 SQL 오류 [22007] : 날짜, 시간 또는 시간 소인 문자열 유효하지에서 [SQL0181] 값. java.sql.SQLException : [SQL0181] 날짜, 시간 또는 의 값 타임 스탬프 문자열이 유효하지 않습니다.

Reception Date GG 
20160921  100500 
20160921  0 

SAMPLE 자료 :와

create table qtemp/fit 
(
    "Reception Date" char(10), 
    "DT" int 
); 

insert into qtemp/fit values 
('20160921', 140816), 
('20160921', 250816), 
('20160921', 180816), 
('20160921', 70916), 
('20160921', 10916), 
('20160921', 210916), 
('20160921', 210916), 
('20160921', 210916), 
('20160921', 200916), 
('20160921', 0), 
('20160921', 0), 
('20160921', 0), 
('20160921', 0), 
('20160921', 0), 
('20160921', 210916) 
+0

는 일부 샘플 테이블 데이터를 추가하고이 결과를 기대합니다. 지금과 같이 매우 불분명합니다. – jarlh

+0

| 접수 날짜 | GG | | --------------- | ------- | | 20160921 | 100500 | | 20160921 | 0 | | 20160921 | 0 | | 20160921 | 0 | | 20160921 | 0 | | 20160921 | 0 | | 20160921 | 0 | | 20160921 | 0 | | 20160921 | 0 | | 20160921 | 0 | | 20160921 | 0 | | 20160921 | 0 | | 20160921 | 0 | | 20160921 | 0 | | 20160921 | 100500 | – user3420361

+0

대신 질문을 수정하십시오. – jarlh

답변

1

샘플 날짜 (가정 된) :

create table qtemp/tstdta 
(
    "Reception Date" char(10), 
    "DT" int 
); 

insert into qtemp/tstdta values 
('20160921', 140816), 
('20160921', 250816), 
('20160921', 180816), 
('20160921', 70916), 
('20160921', 10916), 
('20160921', 210916), 
('20160921', 210916), 
('20160921', 210916), 
('20160921', 200916), 
('20160921', 0), 
('20160921', 0), 
('20160921', 0), 
('20160921', 0), 
('20160921', 0), 
('20160921', null), 
('20160921', null), 
('20160921', null) 

솔루션 :

WITH as t (
    SELECT "Reception Date", 
      CASE WHEN "DT" IS NULL THEN 100 
       ELSE 100500 
       END AS "GG" 
    FROM qtemp/tstdta 
) 
SELECT "Reception Date", "GG", count(*) as COUNT 
FROM t 
GROUP BY "Reception Date", "GG" 

결과 :

Reception Date GG   COUNT   
------------------------------------------ 
20160921  100   3    
20160921  100500  14