下面这段代码在企业管理器中总出出错误提示:列前缀 "SP " 与查询中所用的表名或别名不匹配,请大家帮忙看下问题出在哪里,谢谢了!
SELECT rkxsjc.*, jcsl + rksl - xssl AS bqsl, jcje + rkje - xsje AS bqje, SP.SPMC,
SP.spbm
FROM (SELECT rkxs.*, isnull(jcT.sl, 0) AS jcsl, isnull(jcT.je, 0) AS jcje
FROM (SELECT rk.*, isnull(xs.xssl, 0) AS xssl, isnull(xs.xsje, 0) AS xsje
FROM (SELECT sp.spid, SUM(rkdm.rksl) AS rksl, SUM(rkdm.rkje)
AS rkje
FROM (SELECT sp.spid, isnull(rkdmx.sl, 0) AS rksl, isnull(rkdmx.je, 0)
AS rkje
FROM sp LEFT JOIN
(SELECT rkd_mx.spid, rkd_mx.sl,
(rkd_mx.sl * rkd_mx.cbdj) AS je
FROM (SELECT *
FROM rkd_zb
WHERE rkrq >= '2009-7-01' AND
rkrq <= '2009/07/31') AS rkd LEFT JOIN
rkd_mx ON rkd.rkdbh = rkd_mx.rkdbh)
AS rkdmx ON sp.spid = rkdmx.spid) rkdm
GROUP BY sp.spid) AS rk LEFT JOIN
(SELECT xsd_mx.spid, SUM(xsd_mx.sl) AS xssl,
SUM(xsd_mx.cbdj * xsd_mx.sl) AS xsje
FROM (SELECT *
FROM xsd_zb
WHERE xsrq >= '2009-7-01' AND xsrq <= '2009/07/31')
AS xsd LEFT JOIN
xsd_mx ON xsd.xsdbh = xsd_mx.xsdbh
GROUP BY xsd_mx.spid) AS xs ON rk.spid = xs.spid) AS rkxs LEFT
JOIN
(SELECT spid, jcsl AS sl, jcje AS je
FROM jcsp
WHERE jcny = '2009/07/01') AS jcT ON rkxs.spid = jcT.spid)
rkxsjc INNER JOIN
SP ON rkxsjc.spid = SP.SPID
SELECT rkxsjc.*, jcsl + rksl - xssl AS bqsl, jcje + rkje - xsje AS bqje, SP.SPMC,
SP.spbm
FROM (SELECT rkxs.*, isnull(jcT.sl, 0) AS jcsl, isnull(jcT.je, 0) AS jcje
FROM (SELECT rk.*, isnull(xs.xssl, 0) AS xssl, isnull(xs.xsje, 0) AS xsje
FROM (SELECT sp.spid, SUM(rkdm.rksl) AS rksl, SUM(rkdm.rkje)
AS rkje
FROM (SELECT sp.spid, isnull(rkdmx.sl, 0) AS rksl, isnull(rkdmx.je, 0)
AS rkje
FROM sp LEFT JOIN
(SELECT rkd_mx.spid, rkd_mx.sl,
(rkd_mx.sl * rkd_mx.cbdj) AS je
FROM (SELECT *
FROM rkd_zb
WHERE rkrq >= '2009-7-01' AND
rkrq <= '2009/07/31') AS rkd LEFT JOIN
rkd_mx ON rkd.rkdbh = rkd_mx.rkdbh)
AS rkdmx ON sp.spid = rkdmx.spid) rkdm
GROUP BY sp.spid) AS rk LEFT JOIN
(SELECT xsd_mx.spid, SUM(xsd_mx.sl) AS xssl,
SUM(xsd_mx.cbdj * xsd_mx.sl) AS xsje
FROM (SELECT *
FROM xsd_zb
WHERE xsrq >= '2009-7-01' AND xsrq <= '2009/07/31')
AS xsd LEFT JOIN
xsd_mx ON xsd.xsdbh = xsd_mx.xsdbh
GROUP BY xsd_mx.spid) AS xs ON rk.spid = xs.spid) AS rkxs LEFT
JOIN
(SELECT spid, jcsl AS sl, jcje AS je
FROM jcsp
WHERE jcny = '2009/07/01') AS jcT ON rkxs.spid = jcT.spid)
rkxsjc INNER JOIN
SP ON rkxsjc.spid = SP.SPID
解决方案 »
- sql语句?
- 100分求救SQL查询
- 免用游标求解SQL过程
- 请问如何获取Sql Server中某个数据库的所有用户表名,以及某个特定用户表中列的信息,比如列的数目,列名,列的数据类型?
- 查询分析器里出错,错在哪里了?
- 英文2000server上可以用中文sqlserver吗?
- 一个在sql中看似简单的问题,关于不同日期的流水号的生成,在线等
- 小康问题:触发器问题(大虾菜鸟快进来看看)!~
- 请问sp_executesql怎么用???
- ●●● 急!毕业设计!打开access数据库时出错,很简单的一段代码,希望好心人帮我指出错误所在。
- 在履历表里查找满足条件的记录的效率问题
- 从VFP导数据到sql2k数据太多,大家有方法吗?
前面相关的也要修改。
SP sp1 ON rkxsjc.spid = SP1.SPID
(SELECT sp.spid, SUM(rkdm.rksl) AS rksl, SUM(rkdm.rkje)
AS rkje
FROM (SELECT sp.spid, isnull(rkdmx.sl, 0) AS rksl, isnull(rkdmx.je, 0)
AS rkje
FROM sp LEFT JOIN
(SELECT rkd_mx.spid, rkd_mx.sl,
(rkd_mx.sl * rkd_mx.cbdj) AS je
FROM (SELECT *
FROM rkd_zb
WHERE rkrq >= '2009-7-01' AND
rkrq <= '2009/07/31') AS rkd LEFT JOIN
rkd_mx ON rkd.rkdbh = rkd_mx.rkdbh)
AS rkdmx ON sp.spid = rkdmx.spid) rkdm
GROUP BY sp.spid) AS rk
...====>...
....
(SELECT spid, SUM(rkdm.rksl) AS rksl, SUM(rkdm.rkje)
AS rkje
FROM (SELECT sp.spid, isnull(rkdmx.sl, 0) AS rksl, isnull(rkdmx.je, 0)
AS rkje
FROM sp LEFT JOIN
(SELECT rkd_mx.spid, rkd_mx.sl,
(rkd_mx.sl * rkd_mx.cbdj) AS je
FROM (SELECT *
FROM rkd_zb
WHERE rkrq >= '2009-7-01' AND
rkrq <= '2009/07/31') AS rkd LEFT JOIN
rkd_mx ON rkd.rkdbh = rkd_mx.rkdbh)
AS rkdmx ON sp.spid = rkdmx.spid) rkdm
GROUP BY spid) AS rk
...
...
SELECT *
FROM rkd_zb
WHERE rkrq >= '2009-7-01' AND
rkrq <= '2009/07/31'
SELECT rkd_mx.spid, rkd_mx.sl,
(rkd_mx.sl * rkd_mx.cbdj) AS je
FROM (SELECT *
FROM rkd_zb
WHERE rkrq >= '2009-7-01' AND
rkrq <= '2009/07/31') AS rkd LEFT JOIN
rkd_mx ON rkd.rkdbh = rkd_mx.rkdbh
SELECT sp.spid, isnull(rkdmx.sl, 0) AS rksl, isnull(rkdmx.je, 0)
AS rkje
FROM sp LEFT JOIN
(SELECT rkd_mx.spid, rkd_mx.sl,
(rkd_mx.sl * rkd_mx.cbdj) AS je
FROM (SELECT *
FROM rkd_zb
WHERE rkrq >= '2009-7-01' AND
rkrq <= '2009/07/31') AS rkd LEFT JOIN
rkd_mx ON rkd.rkdbh = rkd_mx.rkdbh)
AS rkdmx ON sp.spid = rkdmx.spid
......
没见过如此的牛人,这样一层层嵌套下去,够累吧,效率恐怕也会很低.
FROM (SELECT spid, SUM(rkdm.rksl) AS rksl, SUM(rkdm.rkje)
FROM (
SELECT rk.*, isnull(xs.xssl, 0) AS xssl, isnull(xs.xsje, 0) AS xsje
isnull(jcsp.sl, 0) AS jcsl, isnull(jcsp.je, 0) AS jcje
FROM (
SELECT sp.spid, sum(isnull(rkdmx.sl, 0)) AS rksl, sum(isnull(rkdmx.je, 0)) AS rkje
FROM sp LEFT JOIN (
SELECT rkd_mx.spid, rkd_mx.sl,
(rkd_mx.sl * rkd_mx.cbdj) AS je
FROM rkd_zb LEFT JOIN rkd_mx
ON rkd_zb.rkdbh = rkd_mx.rkdbh
WHERE rkd_zb.rkrq >= '2009-7-01' AND
rkd_zb.rkrq <= '2009/07/31'
)AS rkdmx ON sp.spid = rkdmx.spid
GROUP BY sp.spid
) AS rk LEFT JOIN (
SELECT xsd_mx.spid, SUM(xsd_mx.sl) AS xssl,
SUM(xsd_mx.cbdj * xsd_mx.sl) AS xsje
FROM (
SELECT xsdbh
FROM xsd_zb
WHERE xsrq >= '2009-7-01' AND xsrq <= '2009/07/31'
) AS xsd LEFT JOIN xsd_mx ON xsd.xsdbh = xsd_mx.xsdbh
GROUP BY xsd_mx.spid
) AS xs ON rk.spid = xs.spid
LEFT JOIN jcsp ON rk.spid = jcsp.spid
WHERE jcsp.jcny = '2009/07/01'
)AS rkxsjc INNER JOIN SP ON rkxsjc.spid = SP.SPID
SELECT rkxsjc.*, jcsl + rksl - xssl AS bqsl, jcje + rkje - xsje AS bqje, SP.SPMC,
SP.spbm
FROM (SELECT rkxs.*, isnull(jcT.sl, 0) AS jcsl, isnull(jcT.je, 0) AS jcje
FROM (SELECT rk.*, isnull(xs.xssl, 0) AS xssl, isnull(xs.xsje, 0) AS xsje
FROM (SELECT rkdm.spid, SUM(rkdm.rksl) AS rksl, SUM(rkdm.rkje)
AS rkje
FROM (SELECT sp.spid, isnull(rkdmx.sl, 0) AS rksl, isnull(rkdmx.je, 0)
AS rkje
FROM sp LEFT JOIN
(SELECT rkd_mx.spid, rkd_mx.sl,
(rkd_mx.sl * rkd_mx.cbdj) AS je
FROM (SELECT *
FROM rkd_zb
WHERE rkrq >= '2009-7-01' AND
rkrq <= '2009/07/31') AS rkd LEFT JOIN
rkd_mx ON rkd.rkdbh = rkd_mx.rkdbh)
AS rkdmx ON sp.spid = rkdmx.spid) rkdm
GROUP BY rkdm.spid) AS rk LEFT JOIN
(SELECT xsd_mx.spid, SUM(xsd_mx.sl) AS xssl,
SUM(xsd_mx.cbdj * xsd_mx.sl) AS xsje
FROM (SELECT *
FROM xsd_zb
WHERE xsrq >= '2009-7-01' AND xsrq <= '2009/07/31')
AS xsd LEFT JOIN
xsd_mx ON xsd.xsdbh = xsd_mx.xsdbh
GROUP BY xsd_mx.spid) AS xs ON rk.spid = xs.spid) AS rkxs LEFT
JOIN
(SELECT spid, jcsl AS sl, jcje AS je
FROM jcsp
WHERE jcny = '2009/07/01') AS jcT ON rkxs.spid = jcT.spid)
rkxsjc INNER JOIN
SP ON rkxsjc.spid = SP.SPID