Sto*_*oak 3 sql database coldfusion
用数据源工作正常的SQL查询.代码;
<cfquery name="GET_ACC_REMAINDER" datasource="#dsn2#">
SELECT
SUM(BAKIYE) AS BAKIYE,
SUM(BORC) AS BORC,
SUM(ALACAK) AS ALACAK,
ACCOUNT_CODE,
ACCOUNT_NAME,
ACCOUNT_ID
FROM
(
SELECT
ROUND(SUM(ACCOUNT_ACCOUNT_REMAINDER.BORC - ACCOUNT_ACCOUNT_REMAINDER.ALACAK),2) AS BAKIYE,
ROUND(SUM(ACCOUNT_ACCOUNT_REMAINDER.BORC),2) AS BORC,
ROUND(SUM(ACCOUNT_ACCOUNT_REMAINDER.ALACAK),2) AS ALACAK,
ACCOUNT_PLAN.ACCOUNT_CODE,
ACCOUNT_PLAN.ACCOUNT_NAME,
ACCOUNT_PLAN.ACCOUNT_ID,
ACCOUNT_PLAN.SUB_ACCOUNT
FROM
(
SELECT
0 AS ALACAK,
SUM(ROUND(ACCOUNT_CARD_ROWS.AMOUNT,2)) AS BORC,
ACCOUNT_CARD_ROWS.ACCOUNT_ID
FROM
ACCOUNT_CARD_ROWS,ACCOUNT_CARD
WHERE
BA = 0 AND ACCOUNT_CARD.CARD_ID=ACCOUNT_CARD_ROWS.CARD_ID
AND ACTION_DATE BETWEEN '2013-11-01 00:00:00' AND '2013-11-30 00:00:00' GROUP BY
ACCOUNT_CARD_ROWS.ACCOUNT_ID
HAVING SUM(ROUND(ACCOUNT_CARD_ROWS.AMOUNT,2))<>0
UNION ALL
SELECT
SUM(ROUND(ACCOUNT_CARD_ROWS.AMOUNT,2)) AS ALACAK,
0 AS BORC,
ACCOUNT_CARD_ROWS.ACCOUNT_ID
FROM
ACCOUNT_CARD_ROWS,
ACCOUNT_CARD
WHERE
BA = 1 AND ACCOUNT_CARD.CARD_ID=ACCOUNT_CARD_ROWS.CARD_ID
AND ACTION_DATE BETWEEN '2013-11-01 00:00:00' AND '2013-11-30 00:00:00' GROUP BY
ACCOUNT_CARD_ROWS.ACCOUNT_ID
HAVING SUM(ROUND(ACCOUNT_CARD_ROWS.AMOUNT,2))<>0
UNION ALL
SELECT DISTINCT
0 AS ALACAK,
0 AS BORC,
ACCOUNT_PLAN.ACCOUNT_CODE
FROM
ACCOUNT_PLAN,
ACCOUNT_PLAN ACCOUNT_ACCOUNT_REMAINDER
WHERE
ACCOUNT_PLAN.ACCOUNT_CODE NOT IN
(SELECT
ACCOUNT_ID
FROM
ACCOUNT_CARD_ROWS,
ACCOUNT_CARD
WHERE
ACCOUNT_PLAN.ACCOUNT_CODE = ACCOUNT_CARD_ROWS.ACCOUNT_ID AND
ACCOUNT_CARD_ROWS.CARD_ID = ACCOUNT_CARD.CARD_ID
AND ACCOUNT_CARD.ACTION_DATE BETWEEN '2013-11-01 00:00:00' AND '2013-11-30 00:00:00' )
AND ACCOUNT_PLAN.ACCOUNT_CODE = LEFT(ACCOUNT_ACCOUNT_REMAINDER.ACCOUNT_CODE,3)
)
AS ACCOUNT_ACCOUNT_REMAINDER,
ACCOUNT_PLAN
WHERE
1=1
AND ACCOUNT_PLAN.ACCOUNT_CODE = LEFT(ACCOUNT_ACCOUNT_REMAINDER.ACCOUNT_ID,3)
GROUP BY
ACCOUNT_PLAN.ACCOUNT_CODE,
ACCOUNT_PLAN.ACCOUNT_NAME,
ACCOUNT_PLAN.ACCOUNT_ID,
ACCOUNT_PLAN.SUB_ACCOUNT
)T1
GROUP BY
ACCOUNT_CODE,
ACCOUNT_NAME,
ACCOUNT_ID,
SUB_ACCOUNT
ORDER BY
ACCOUNT_CODE
</cfquery>
Run Code Online (Sandbox Code Playgroud)
这个查询太慢了.为此,我尝试使用查询查询.我写了一些东西.
<cfquery name="ACCOUNT_PLAN" datasource="#dsn2#">
select * from ACCOUNT_PLAN
</cfquery>
<cfquery name="ACCOUNT_CARD" datasource="#dsn2#">
select * from ACCOUNT_CARD
</cfquery>
<cfquery name="ACCOUNT_CARD_ROWS" datasource="#dsn2#">
select * from ACCOUNT_CARD_ROWS
</cfquery>
<cfquery name="GET_ACC_REMAINDER" dbtype="query">
SELECT
SUM(BAKIYE) AS BAKIYE,
SUM(BORC) AS BORC,
SUM(ALACAK) AS ALACAK,
ACCOUNT_CODE,
ACCOUNT_NAME,
ACCOUNT_ID
FROM
(
SELECT
ROUND(SUM(ACCOUNT_ACCOUNT_REMAINDER.BORC - ACCOUNT_ACCOUNT_REMAINDER.ALACAK),2) AS BAKIYE,
ROUND(SUM(ACCOUNT_ACCOUNT_REMAINDER.BORC),2) AS BORC,
ROUND(SUM(ACCOUNT_ACCOUNT_REMAINDER.ALACAK),2) AS ALACAK,
ACCOUNT_PLAN.ACCOUNT_CODE,
ACCOUNT_PLAN.ACCOUNT_NAME,
ACCOUNT_PLAN.ACCOUNT_ID,
ACCOUNT_PLAN.SUB_ACCOUNT
FROM
(
SELECT
0 AS ALACAK,
SUM(ROUND(ACCOUNT_CARD_ROWS.AMOUNT,2)) AS BORC,
ACCOUNT_CARD_ROWS.ACCOUNT_ID
FROM
ACCOUNT_CARD_ROWS,ACCOUNT_CARD
WHERE
BA = 0 AND ACCOUNT_CARD.CARD_ID=ACCOUNT_CARD_ROWS.CARD_ID
AND ACTION_DATE BETWEEN '2013-11-01 00:00:00' AND '2013-11-30 00:00:00' GROUP BY
ACCOUNT_CARD_ROWS.ACCOUNT_ID
HAVING SUM(ROUND(ACCOUNT_CARD_ROWS.AMOUNT,2))<>0
UNION ALL
SELECT
SUM(ROUND(ACCOUNT_CARD_ROWS.AMOUNT,2)) AS ALACAK,
0 AS BORC,
ACCOUNT_CARD_ROWS.ACCOUNT_ID
FROM
ACCOUNT_CARD_ROWS,
ACCOUNT_CARD
WHERE
BA = 1 AND ACCOUNT_CARD.CARD_ID=ACCOUNT_CARD_ROWS.CARD_ID
AND ACTION_DATE BETWEEN '2013-11-01 00:00:00' AND '2013-11-30 00:00:00' GROUP BY
ACCOUNT_CARD_ROWS.ACCOUNT_ID
HAVING SUM(ROUND(ACCOUNT_CARD_ROWS.AMOUNT,2))<>0
UNION ALL
SELECT DISTINCT
0 AS ALACAK,
0 AS BORC,
ACCOUNT_PLAN.ACCOUNT_CODE
FROM
ACCOUNT_PLAN,
ACCOUNT_PLAN ACCOUNT_ACCOUNT_REMAINDER
WHERE
ACCOUNT_PLAN.ACCOUNT_CODE NOT IN
(SELECT
ACCOUNT_ID
FROM
ACCOUNT_CARD_ROWS,
ACCOUNT_CARD
WHERE
ACCOUNT_PLAN.ACCOUNT_CODE = ACCOUNT_CARD_ROWS.ACCOUNT_ID AND
ACCOUNT_CARD_ROWS.CARD_ID = ACCOUNT_CARD.CARD_ID
AND ACCOUNT_CARD.ACTION_DATE BETWEEN '2013-11-01 00:00:00' AND '2013-11-30 00:00:00' )
AND ACCOUNT_PLAN.ACCOUNT_CODE = LEFT(ACCOUNT_ACCOUNT_REMAINDER.ACCOUNT_CODE,3)
)
AS ACCOUNT_ACCOUNT_REMAINDER,
ACCOUNT_PLAN
WHERE
1=1
AND ACCOUNT_PLAN.ACCOUNT_CODE = LEFT(ACCOUNT_ACCOUNT_REMAINDER.ACCOUNT_ID,3)
GROUP BY
ACCOUNT_PLAN.ACCOUNT_CODE,
ACCOUNT_PLAN.ACCOUNT_NAME,
ACCOUNT_PLAN.ACCOUNT_ID,
ACCOUNT_PLAN.SUB_ACCOUNT
)T1
GROUP BY
ACCOUNT_CODE,
ACCOUNT_NAME,
ACCOUNT_ID,
SUB_ACCOUNT
ORDER BY
ACCOUNT_CODE
</cfquery>
Run Code Online (Sandbox Code Playgroud)
Coldfusion调试显示此错误.
执行数据库查询时出错.查询查询语法错误.遇到"(.错误发生在第10行.
你知道吗?
| 归档时间: |
|
| 查看次数: |
2550 次 |
| 最近记录: |