在informix数据库中,我有一个名为transactions
的表,其中有trans_id
,card_number
,trans_date
和trans_status
列。
它可能包含重复的trans_id
值,某些trans_id
值甚至可能包含某些记录的 null 值。
现在,我需要根据card_number
,trans_date
和trans_status
对这些记录进行分组。
在这样做的同时,如果重复trans_id
并且trans_id
为空,那么我应该只计算一次记录,那么对于每个 null <我应该将其计为 1 / strong> trans_id
。
因此,例如,如果我有10张卡号 12345678 的记录,其中重复3 trans_id
个值(总共6个),并且一个trans_id
是唯一的并且其余3 trans_id
nulls 然后我应该将该计数作为 7 该卡号。
我尝试了以下在MySQL中运行的查询,但同样的一个在Informix数据库中失败,它在表示必须在group by子句中的错误。
SELECT
card_number,
(COUNT(*)+nulltransids-1)
FROM (
(SELECT
trans_id,
card_number,
(COUNT(*)-COUNT(trans_id)) AS nulltransids
FROM test.transactions
GROUP BY trans_id,card_number
) AS trans
)
GROUP BY card_number;
答案 0 :(得分:0)
如果我做到了这一点,您需要唯一trans_id
的数量加上 NULL trans_id
的行数。试试这个:
SELECT card_number,
COUNT(UNIQUE trans_id) + (COUNT(*) - COUNT(trans_id)) AS cnt
FROM transactions
GROUP BY card_number