0

我想请您帮忙查询。我有一个带有 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

这是错误的形式。我怎样才能让它工作?预先感谢您的回答!

4

1 回答 1

0

好的,所以您似乎也在尝试了解更新语法...(这是合规的):

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

对于每一行。

于 2013-01-18T13:03:30.593 回答