SQL查询的问题.请指教!

来源:百度知道 编辑:UC知道 时间:2024/09/28 09:58:53
SELECT t2.pk_srcbill,t2.billdate,
(CASE WHEN t3.headcorpcode is null THEN t2.custcode ELSE t3.headcorpcode END )AS custcode,
SUM(t2.taxsum) AS taxsum,SUM(t2.notaxsum) AS notaxsum
FROM itf_srcbill t1 ,itf_srcbill_b t2, itf_custrelate t3
WHERE t2.billtypename = '销售出库'
AND t1.pk_billsrc = t2.pk_srcbill
GROUP BY t2.pk_srcbill,t2.billdate,
t2.custcode,t3.headcorpcode
-------------------------------------------------------------
(DB2数据库)*注意()里的语句
以上语句是查询时,如果t3.headcorpcode 不为空的话取它,为空的话取t2.custcode.最后AS custcode
问题是GROUP BY 要加上t2.custcode和t3.headcorpcode,那样取出来的数据就翻了一倍,而如果写成custcode又运行不了.请高人指点迷津...
多谢沙发的回答.但是我想问一下.t3.headcorpcode 不为空的话取t3.headcorpcode ,为空的话取t2.custcode,而这两个字段都是char型的,不是int型的.UNION的话会不会出现空行?

估计你是要UNION的结果吧

SELECT t2.pk_srcbill,t2.billdate, t2.custcode AS custcode,
SUM(t2.taxsum) AS taxsum,SUM(t2.notaxsum) AS notaxsum
FROM itf_srcbill t1 ,itf_srcbill_b t2, itf_custrelate t3
WHERE t2.billtypename = '销售出库'
AND t1.pk_billsrc = t2.pk_srcbill
AND t3.headcorpcode is null
GROUP BY t2.pk_srcbill,t2.billdate,t2.custcode
UNION
SELECT t2.pk_srcbill,t2.billdate, t3.headcorpcode AS custcode,
SUM(t2.taxsum) AS taxsum,SUM(t2.notaxsum) AS notaxsum
FROM itf_srcbill t1 ,itf_srcbill_b t2, itf_custrelate t3
WHERE t2.billtypename = '销售出库'
AND t1.pk_billsrc = t2.pk_srcbill
AND t3.headcorpcode is NOT null
GROUP BY t2.pk_srcbill,t2.billdate,t3.headcorpcode

不会有空行啊,你说的空行是什么意思?两个结果即分别都没有空行,UNION只是两个集相加,当然也没有空行。

SELECT t.pk_srcbill,t.billdate,t.linecode,t.linename,t.settlecode,t.settlename,t.corpcode,t.deliveryman,t.operateflag,
t.subcustcode AS custcode,t.subcustname AS cus