SQL关于GROUP BY字段为空的处理. 现在我有多个表关联,其中表中的字段里新增加了一列invoice_no但是,此列为空值,由用户后期修改的,但是在我GROUP BY后全部都分到一个组里了。 我想将内容为空的不分到一个组里,全部都显示出来要怎么做?
但是,如果invoice_no不包含在GROUP BY中,就会报:选择列表中的列 'AMS_EQUIP_BUY.invoice_no' 无效,因为该列没有包含在聚合函数或 GROUP BY 子句中。
求修改方法。
SELECT
eb.invoice_no,
e.equip_name,
e.unit,
isnull(dtl1.type_name, '') + ' ' + isnull(dtl.type_name, '') AS type_name,
eb.funds_source,
eb.buy_date,
eb.price,
SUM (eb.equip_num) AS num,
(eb.price * SUM(eb.equip_num)) AS total_price
FROM
AMS_EQUIP e
LEFT JOIN AMS_EQUIP_BUY eb ON e.buy_id = eb.buy_id
LEFT JOIN ams_type_record_relation r ON e.equip_id = r.record_id
AND r.use_name = 'equipAccount'
LEFT JOIN ams_type_detail dtl ON r.type_id = dtl.type_id
LEFT JOIN ams_type_detail dtl1 ON dtl.parent_id = dtl1.type_id
LEFT JOIN AMS_EQUIP_DEPT ed ON ed.equip_id = e.equip_id
${request.whereCondition}
GROUP BY
eb.invoice_no,
e.equip_name,
e.unit,
eb.funds_source,
eb.buy_date,
eb.price,
dtl1.type_name,
dtl.type_name
with tb(a,b) as
(
select null, 1 union all
select null, 2 union all
select 3, 3 union all
select 3, 4
)
select a, sum(b) from tb group by isnull(a,checksum(newid())), a
/*
a
----------- -----------
NULL 1
NULL 2
3 7