2016-09-22 321 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