尝试根据销售员工将2列与另外2列进行比较时出现以下错误。
当选择列表中只能指定一个表达式时 子查询不是用EXISTS引入的。
我的代码是:
select T1.CardCode 'BP Code',
T1.CardName 'BP Name',
COUNT(T0.DocNum) '# of Orders',
SUM(T0.DocTotal) 'Total Orders Amt',
SUM(T0.DOCTOTAL)/COUNT(T0.DOCNUM) 'Avg Order Size',
(SELECT COUNT(T0.DocNum),
SUM(T0.DocTotal),
SUM(T0.DOCTOTAL)/COUNT(T0.DOCNUM)
from ORDR T0 INNER JOIN OCRD T1 ON T0.CardCode=T1.CardCode
where T0.DocStatus = 'C'
AND T0.CANCELED <> 'Y'
AND T0.DocDate >= '2015-05-26'
AND T1.SlpCode = '37'
GROUP BY T1.CardCode,
T1.CardName)
from ORDR T0 INNER JOIN OCRD T1 ON T0.CardCode=T1.CardCode
where T0.DocStatus = 'C'
AND T0.CANCELED <> 'Y'
AND T0.DocDate >= '2015-05-26'
AND T1.SlpCode <> '37'
GROUP BY T1.CardCode,
T1.CardName
我希望将新员工与新员工之间的客户帐户与今年的就业日期进行比较。所以我想要 6 列。
当前账户持有人生成的[订单数量],[总订单金额],[平均订单金额] 3列[订单数量],[总订单金额],[平均订单金额]由销售员工“37”生成。
有关重新排列此代码以实现我正在寻找的任何建议吗?
答案 0 :(得分:0)
我认为只需查询一次表就足够了:
select T1.CardCode 'BP Code',
T1.CardName 'BP Name',
COUNT(CASE WHEN T1.SlpCode<>'37' THEN T0.DocNum END) '# of Orders',
SUM(CASE WHEN T1.SlpCode<>'37' THEN T0.DocTotal END) 'Total Orders Amt',
SUM(CASE WHEN T1.SlpCode<>'37' THEN T0.DOCTOTAL END)/
COUNT(CASE WHEN T1.SlpCode<>'37' THEN T0.DocNum END) 'Avg Order Size',
COUNT(CASE WHEN T1.SlpCode='37' THEN T0.DocNum END),
SUM(CASE WHEN T1.SlpCode='37' THEN T0.DocTotal END),
SUM(CASE WHEN T1.SlpCode='37' THEN T0.DOCTOTAL END)/
COUNT(CASE WHEN T1.SlpCode='37' THEN T0.DocNum END),
from ORDR T0 INNER JOIN OCRD T1 ON T0.CardCode=T1.CardCode
where T0.DocStatus = 'C'
AND T0.CANCELED <> 'Y'
AND T0.DocDate >= '2015-05-26'
GROUP BY T1.CardCode,
T1.CardName
您可能还想删除计算此处平均值的列,并执行该处理作为后续步骤,例如:消耗此结果集的代码,这样您就不必处理除零,如果这是一个风险。