此代码生成此结果
SELECT PER.GLACCOUNT, PER.PERIOD,(SELECT GL.[CLOSING_CREDIT]
FROM [EMBDATA].[DBO].[_EMB_GL_ACTUALVALUESTYP] AS GL
WHERE GL.PERIOD = (DBO.GETMAXPERIOD(PER.GLACCOUNT,PER.PERIOD))
AND GL.ID COLLATE SQL_Latin1_General_CP1_CS_AS =
COLLATE SQL_Latin1_General_CP1_CS_AS ) AS BALANCE
FROM [DBO].[GL_PERIOD_BAL] AS PER
WHERE LEFT(PER.GLACCOUNT,4) = 'NM01' AND [BAL.TYPE] = 'R'
ORDER BY PER.GLACCOUNT,PER.PERIOD GLACCOUNT PERIOD BALANCE)
结果
NM01-4100-0015 2015-12 7081557.0000
NM01-4100-0016 2015-12 0.0000
NM01-4100-0017 2015-12 0.0000
NM01-4100-0018 2015-12 12329577.0000
NM01-4100-0019 2015-12 1622830124.0000
NM01-4100-0020 2015-12 0.0000
NM01-4100-0021 2015-12 23747.0000
NM01-4100-0022 2015-12 0.0000
NM01-4100-0023 2015-12 1623014.0000
但是如果我想将它组合成一个更新语句,它就不会更新 代码。
UPDATE [DBO].[GL_PERIOD_BAL]
SET [CLOSING_CREDIT] = (SELECT GL.[CLOSING_CREDIT]
FROM [EMBRACEDATA].[DBO].[_EMB_GL_ACTUALVALUESTYP] GL
WHERE GL.PERIOD = (DBO.GETMAXPERIOD(GLACCOUNT,PERIOD))
AND GL.ID COLLATE SQL_Latin1_General_CP1_CS_AS =
GLACCOUNT COLLATE SQL_Latin1_General_CP1_CS_AS)
WHERE LEFT(GLACCOUNT,4) = 'NM01' AND [BAL.TYPE] = 'R'
答案 0 :(得分:0)
当您尝试使用oracle中的子查询进行更新时,如果子查询返回多行,则会显示以下错误消息: "单行子查询返回多行"
我想你也是如此。子查询不应返回多行,以便成功更新。 您需要使用各种子句中的一个,这些子句有助于将获取的行数限制为一个,这可能是top子句,limit子句等。这应根据您要为其选择的数据来决定/操作。更新
答案 1 :(得分:0)
非常感谢您的投入。
我设法通过为所有列添加别名来找到解决方案。
rsync -avh -e "ssh -p 3286" somelocal_folder/ me@x.x.x.x:/data/bu/