使用類似:
select input,
count(*) as quantity
from dummy
where en = 'Y'
group by input
的原因,你不能使用having en = 'Y'
是因爲你已經加載了所有的行,並在having
條款踢分組之前他們換句話說,你不再有列en
列信息,它已經在聚集中丟失。
下面見成績單:
> DROP TABLE DUMMY%
> CREATE TABLE DUMMY (OUTPUT CHAR(2), OQTY INTEGER,
>> INPUT CHAR(1), IQTY INTEGER, EN CHAR(2), FLEX INTEGER)%
> INSERT INTO DUMMY (OUTPUT, OQTY, INPUT, IQTY, EN, FLEX) VALUES
>> ('Y3',1,'X',2,'Y',0), ('Y4',1,'X',2,'Y',0), ('Y5',1,'X',2,'N',0),
>> ('Y6',1,'X',2,'N',0), ('Y1',1,'X',2,'Y',0), ('Y2',1,'X',2,'Y',0)%
> SELECT * FROM DUMMY ORDER BY EN, INPUT, OUTPUT%
OUTPUT OQTY INPUT IQTY EN FLEX
------ ---- ----- ---- -- ----
Y5 1 X 2 N 0
Y6 1 X 2 N 0
Y1 1 X 2 Y 0
Y2 1 X 2 Y 0
Y3 1 X 2 Y 0
Y4 1 X 2 Y 0
> SELECT INPUT, COUNT(*) AS QUANT
>> FROM DUMMY
>> WHERE EN = 'Y'
>> GROUP BY INPUT%
INPUT QUANT
----- -----
X 4
而且,更新相關行之一:
> UPDATE DUMMY SET INPUT = 'Z' WHERE OUTPUT = 'Y1'%
> SELECT * FROM DUMMY ORDER BY EN, INPUT, OUTPUT%
OUTPUT OQTY INPUT IQTY EN FLEX
------ ---- ----- ---- -- ----
Y5 1 X 2 N 0
Y6 1 X 2 N 0
Y2 1 X 2 Y 0
Y3 1 X 2 Y 0
Y4 1 X 2 Y 0
Y1 1 Z 2 Y 0
> SELECT INPUT, COUNT(*) AS QUANT
>> FROM DUMMY
>> WHERE EN = 'Y'
>> GROUP BY INPUT%
INPUT QUANT
----- -----
X 3
Z 1
沒有它會給輸出X 1 但所需的一個是X 4 – Navin
@navin:你試試? pax的解決方案對我來說是正確的。 – Mat
@Navin,不會,它會給'X 4' - 看到更新。 – paxdiablo