简体   繁体   English

DB2 group by with NULL SQL 错误 [22007]

[英]DB2 group by with NULL SQL Error [22007]

I have query with data format.我有数据格式的查询。 I try to convert it into an integer, but it doesn't help me, I can't group by because I have NULL in rows.我尝试将其转换为整数,但它对我没有帮助,我无法分组,因为我的行中有 NULL。

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

I have many rows so I want to group it, but got error我有很多行,所以我想对其进行分组,但出现错误

SQL Error [22007]: [SQL0181] Value in date, time, or timestamp string not valid. SQL 错误 [22007]:[SQL0181] 日期、时间或时间戳字符串中的值无效。 java.sql.SQLException: [SQL0181] Value in date, time, or timestamp string not valid. java.sql.SQLException: [SQL0181] 日期、时间或时间戳字符串中的值无效。

Reception Date  GG
20160921        100500
20160921        0

SAMPLE DATA:样本数据:

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)

With Sample Date (Assumed):带采样日期(假设):

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)

Solution:解决方案:

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"

Result:结果:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM