2016-09-22 327 views
-1

我使用数据格式进行查询。我尝试将它转换为一个整数,但它不能帮助我,我无法分组,因为我在行中有NULL。DB2 group by with NULL SQL Error [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 

示例数据:

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