SELECT member.memberid,
PointCard.cardnumber,
PointCard.issuedt,
member.membername,
member.sex,
zone.zonedescription,
member.storecode,
(sum(MemberSaleAmt) +
DECODE((SELECT sum(t1.creditcardsaleamt)
FROM pointadjrecbycls t1
WHERE memberlinedaysale.cardnumber = t1.cardnumber
AND t1.proflg = '1'
AND TO_CHAR(t1.adjustdt, 'yyyy-mm-dd') BETWEEN
'2011-02-16' AND '2011-04-08'),
NULL,
0,
(SELECT sum(t1.creditcardsaleamt)
FROM pointadjrecbycls t1
WHERE memberlinedaysale.cardnumber = t1.cardnumber
AND t1.proflg = '1'
AND TO_CHAR(t1.adjustdt, 'yyyy-mm-dd') BETWEEN
'2009-02-16' AND '2011-04-08'))) as creditcardsaleamt,
(SUM(MemberLineDaySale.Membersaleamt) +
DECODE((SELECT sum(t1.creditcardsaleamt)
FROM pointadjrecbycls t1
WHERE memberlinedaysale.cardnumber = t1.cardnumber
AND t1.proflg = '1'
AND TO_CHAR(t1.adjustdt, 'yyyy-mm-dd') BETWEEN
'2011-02-16' AND '2011-04-08'),
NULL,
0,
(SELECT sum(t1.creditcardsaleamt)
FROM pointadjrecbycls t1
WHERE memberlinedaysale.cardnumber = t1.cardnumber
AND t1.proflg = '1'
AND TO_CHAR(t1.adjustdt, 'yyyy-mm-dd') BETWEEN
'2009-02-16' AND '2011-04-08'))) as creditcardsaleamt,
SUM(BasePaymentData.Amount) as 银行卡消费额,
SUM(MemberLineDaySale.consumecount) AS 指定消费次数,
COUNT(DISTINCT HistoryDate) as 指定来店次数
FROM member, MemberLineDaySale, BasePaymentData, pointcard, zone
where memberlinedaysale.cardnumber = pointcard.cardnumber
and basepaymentdata.cardnumber = pointcard.cardnumber
and member.memberid = pointcard.memberid
and zone.zonecode = member.zonecode
group by member.memberid,
PointCard.cardnumber,
PointCard.issuedt,
member.membername,
member.sex,
zone.zonedescription,
member.storecode报不是group by表达式,我知道原因,就是(sum(MemberSaleAmt) +
DECODE((SELECT sum(t1.creditcardsaleamt)
FROM pointadjrecbycls t1
WHERE memberlinedaysale.cardnumber = t1.cardnumber
AND t1.proflg = '1'
AND TO_CHAR(t1.adjustdt, 'yyyy-mm-dd') BETWEEN
'2011-02-16' AND '2011-04-08'),
NULL,
0,
(SELECT sum(t1.creditcardsaleamt)
FROM pointadjrecbycls t1
WHERE memberlinedaysale.cardnumber = t1.cardnumber
AND t1.proflg = '1'
AND TO_CHAR(t1.adjustdt, 'yyyy-mm-dd') BETWEEN
'2009-02-16' AND '2011-04-08'))) as creditcardsaleamt,
这个地方应该加到group by 里面去,但如何加,直接加as后面的字段报“字段无效”
如果去掉group by也行,但去掉就报不是单组分组函数。请教各位大神了。
PointCard.cardnumber,
PointCard.issuedt,
member.membername,
member.sex,
zone.zonedescription,
member.storecode,
(sum(MemberSaleAmt) +
DECODE((SELECT sum(t1.creditcardsaleamt)
FROM pointadjrecbycls t1
WHERE memberlinedaysale.cardnumber = t1.cardnumber
AND t1.proflg = '1'
AND TO_CHAR(t1.adjustdt, 'yyyy-mm-dd') BETWEEN
'2011-02-16' AND '2011-04-08'),
NULL,
0,
(SELECT sum(t1.creditcardsaleamt)
FROM pointadjrecbycls t1
WHERE memberlinedaysale.cardnumber = t1.cardnumber
AND t1.proflg = '1'
AND TO_CHAR(t1.adjustdt, 'yyyy-mm-dd') BETWEEN
'2009-02-16' AND '2011-04-08'))) as creditcardsaleamt,
(SUM(MemberLineDaySale.Membersaleamt) +
DECODE((SELECT sum(t1.creditcardsaleamt)
FROM pointadjrecbycls t1
WHERE memberlinedaysale.cardnumber = t1.cardnumber
AND t1.proflg = '1'
AND TO_CHAR(t1.adjustdt, 'yyyy-mm-dd') BETWEEN
'2011-02-16' AND '2011-04-08'),
NULL,
0,
(SELECT sum(t1.creditcardsaleamt)
FROM pointadjrecbycls t1
WHERE memberlinedaysale.cardnumber = t1.cardnumber
AND t1.proflg = '1'
AND TO_CHAR(t1.adjustdt, 'yyyy-mm-dd') BETWEEN
'2009-02-16' AND '2011-04-08'))) as creditcardsaleamt,
SUM(BasePaymentData.Amount) as 银行卡消费额,
SUM(MemberLineDaySale.consumecount) AS 指定消费次数,
COUNT(DISTINCT HistoryDate) as 指定来店次数
FROM member, MemberLineDaySale, BasePaymentData, pointcard, zone
where memberlinedaysale.cardnumber = pointcard.cardnumber
and basepaymentdata.cardnumber = pointcard.cardnumber
and member.memberid = pointcard.memberid
and zone.zonecode = member.zonecode
group by member.memberid,
PointCard.cardnumber,
PointCard.issuedt,
member.membername,
member.sex,
zone.zonedescription,
member.storecode报不是group by表达式,我知道原因,就是(sum(MemberSaleAmt) +
DECODE((SELECT sum(t1.creditcardsaleamt)
FROM pointadjrecbycls t1
WHERE memberlinedaysale.cardnumber = t1.cardnumber
AND t1.proflg = '1'
AND TO_CHAR(t1.adjustdt, 'yyyy-mm-dd') BETWEEN
'2011-02-16' AND '2011-04-08'),
NULL,
0,
(SELECT sum(t1.creditcardsaleamt)
FROM pointadjrecbycls t1
WHERE memberlinedaysale.cardnumber = t1.cardnumber
AND t1.proflg = '1'
AND TO_CHAR(t1.adjustdt, 'yyyy-mm-dd') BETWEEN
'2009-02-16' AND '2011-04-08'))) as creditcardsaleamt,
这个地方应该加到group by 里面去,但如何加,直接加as后面的字段报“字段无效”
如果去掉group by也行,但去掉就报不是单组分组函数。请教各位大神了。
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货