繁体   English   中英

在一个临时表T-SQL中更新2个值

[英]Update 2 values in one temporary table T-SQL

希望您的查询有所帮助。 我有一个临时表,其中包含value(float),attribute(nvarchar)和system(int)。 我需要根据属性更新值,但要使用系统。 所以...

UPDATE #inventory (value, attribute)
SET (value, attribute) = (SELECT SUM(value), 'Actual'
                        FROM ReportValue v, ReportValueType t, ReportProducts ti
                        WHERE v.type_id = t.id
                        AND v.voyage_id = ti.id
                        AND t.value_code = 'total'
                        AND t.category_code = 'cold'
                        AND ti.end_time BETWEEN @start AND @end)
UPDATE #inventory (value, attribute)
SET (value, attribute) = (SELECT SUM(value), 'Actual'
                        FROM ReportValue v, ReportType t, Reportprod ti
                        WHERE v.type_id = t.id
                        AND v.voyage_id = ti.id
                        AND t.field_name = 'Total'
                        AND t.slot_type = 'COLD'
                        AND t.xml_id = -2000
                        AND ti.end_time BETWEEN @start AND @end)
else (value, attribute)
end

这是错误的形式。 我该如何运作? 预先感谢您的回答!

好的,这样您就可以尝试着更新语法...(兼容):

UPDATE tblNameCanBeTempTable
SET Column1 = S.Value1, Column2 = S.Value2, etc
FROM (anyValidSelectTableStatement) S
    WHERE tblNameCanBeTempTable.KeyValue =  S.keyValue

因此,路由是使您选择语句,检查它是否产生所需的值,然后在开始处添加更新,并在末尾匹配WHERE的行

你可以做类似的事情

Col1 = CASE WHEN X=1 THEN S.Value1 ELSE Col1 END

每行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM