请教将oracle的sql语句转化为sqlserver下的sql语句

azhandotnet 2005-12-08 04:35:11
SELECT CLS_DESC,OBJ_DESC,SUM(ZTS) ZTS,SUM(ZJZ) ZJZ,SUM(ZCYX) ZCYX,SUM(ZX) ZX,SUM(XZ) XZ,SUM(DBYX) DBYX,SUM(DBF) DBF,SUM(TJDX) TJDX,SUM(AZTS) AZTS
from (
SELECT FL.CLS_DESC,SB1.OBJ_DESC,COUNT(SB.OBJ_CODE) ZTS,SUM(SB.OBJ_RESIDUAL) ZJZ,
decode(SB.OBJ_STATUS,'ZCYX',COUNT(SB.OBJ_STATUS),to_number(NULL)) ZCYX,
decode(SB.OBJ_STATUS,'ZX',COUNT(SB.OBJ_STATUS),to_number(NULL)) ZX,
decode(SB.OBJ_STATUS,'XZ',COUNT(SB.OBJ_STATUS),to_number(NULL)) XZ,
decode(SB.OBJ_STATUS,'DBYX',COUNT(SB.OBJ_STATUS),to_number(NULL)) DBYX,
decode(SB.OBJ_STATUS,'DBF',COUNT(SB.OBJ_STATUS),to_number(NULL)) DBF,
decode(SB.OBJ_STATUS,'TJDX',COUNT(SB.OBJ_STATUS),to_number(NULL)) TJDX,
decode(SB.OBJ_STATUS,'AZTS',COUNT(SB.OBJ_STATUS),to_number(NULL)) AZTS
FROM
R5OBJECTS SB,R5CLASSES FL,R5MRCS BM,R5OBJECTS SB1
WHERE
SB.OBJ_CLASS=FL.CLS_CODE(+)
AND SB.OBJ_OBTYPE='A'
AND SB.OBJ_ORG='S02'
AND SB.OBJ_CATEGORY=SB1.OBJ_CODE(+)
AND SB.OBJ_MRC=BM.MRC_CODE(+)
AND BM.MRC_CLASS='WX'
AND NVL(BM.MRC_CODE,-1)=NVL(:P_1,BM.MRC_CODE)
AND NVL(FL.CLS_CODE,-1)=NVL(:PFL,NVL(FL.CLS_CODE,-1))
AND NVL(SB1.OBJ_CODE,-1)=NVL(:PZL,NVL(SB1.OBJ_CODE,-1))
GROUP BY
FL.CLS_DESC,SB1.OBJ_DESC,SB.OBJ_STATUS
ORDER
BY FL.CLS_DESC
)
group by CLS_DESC,OBJ_DESC
ORDER BY CLS_DESC
...全文
88 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
zanglinfeng 2005-12-08
  • 打赏
  • 举报
回复
上面的我看了感觉基本可以
子陌红尘 2005-12-08
  • 打赏
  • 举报
回复
TRY:
----------------------------------------------------------------------------------------------------------

DECLARE @P_1 INT,@PFL INT,@PZL INT
SET @P_1 = ...
SET @PFL = ...
SET @PZL = ...

SELECT
CLS_DESC,
OBJ_DESC,
SUM(ZTS) ZTS,
SUM(ZJZ) ZJZ,
SUM(ZCYX) ZCYX,
SUM(ZX) ZX,
SUM(XZ) XZ,
SUM(DBYX) DBYX,
SUM(DBF) DBF,
SUM(TJDX) TJDX,
SUM(AZTS) AZTS
from
(SELECT
FL.CLS_DESC,
SB1.OBJ_DESC,
COUNT(SB.OBJ_CODE) AS ZTS,
SUM(SB.OBJ_RESIDUAL) AS ZJZ,
CASE SB.OBJ_STATUS WHEN 'ZCYX' COUNT(SB.OBJ_STATUS) ELSE NULL END AS ZCYX,
CASE SB.OBJ_STATUS WHEN 'ZX' COUNT(SB.OBJ_STATUS) ELSE NULL END AS ZX ,
CASE SB.OBJ_STATUS WHEN 'XZ' COUNT(SB.OBJ_STATUS) ELSE NULL END AS XZ ,
CASE SB.OBJ_STATUS WHEN 'DBYX' COUNT(SB.OBJ_STATUS) ELSE NULL END AS DBYX,
CASE SB.OBJ_STATUS WHEN 'DBF' COUNT(SB.OBJ_STATUS) ELSE NULL END AS DBF ,
CASE SB.OBJ_STATUS WHEN 'TJDX' COUNT(SB.OBJ_STATUS) ELSE NULL END AS TJDX,
CASE SB.OBJ_STATUS WHEN 'AZTS' COUNT(SB.OBJ_STATUS) ELSE NULL END AS AZTS
FROM
R5OBJECTS SB
LEFT JOIN
R5CLASSES FL
ON
SB.OBJ_CLASS = FL.CLS_CODE
LEFT JOIN
R5MRCS BM
ON
SB.OBJ_MRC = BM.MRC_CODE
LEFT JOIN
R5OBJECTS SB1
ON
SB.OBJ_CATEGORY = SB1.OBJ_CODE
WHERE
SB.OBJ_OBTYPE = 'A'
AND
SB.OBJ_ORG = 'S02'
AND
BM.MRC_CLASS = 'WX'
AND
ISNULL(BM.MRC_CODE,-1) = ISNULL(@P_1,BM.MRC_CODE)
AND
ISNULL(FL.CLS_CODE,-1) = ISNULL(@PFL,ISNULL(FL.CLS_CODE,-1))
AND
ISNULL(SB1.OBJ_CODE,-1) = ISNULL(@PZL,ISNULL(SB1.OBJ_CODE,-1))
GROUP BY
FL.CLS_DESC,SB1.OBJ_DESC,SB.OBJ_STATUS) T
group by
T.CLS_DESC,T.OBJ_DESC
ORDER BY
T.CLS_DESC

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧