Я пытаюсь переписать этот запрос Oracle для SQL Server 2008:Multiple Обновление от Выберите Где Exists в SQL Server 2008
UPDATE "LOAD"."UNITS_OF_MEASURE"
SET ("UOM_DESC", "UOM_SYMBOL", "UOM_MUL_FACTOR", "UOM_ADD_FACTOR", "UOM_DEC_PLACE", "UOM_REFERENCE", "UOM_SUBTYPE_ID") =
(SELECT "UOM_DESC", "UOM_SYMBOL", "UOM_MUL_FACTOR", "UOM_ADD_FACTOR", "UOM_DEC_PLACE", 0 AS "UOM_REFERENCE", NULL AS "UOM_SUBTYPE_ID"
FROM (SELECT DISTINCT "UOM_TYPE_ID", "UOM_CODE", "UOM_DESC", "UOM_SYMBOL", "UOM_MUL_FACTOR", "UOM_ADD_FACTOR", "UOM_DEC_PLACE"
FROM "LOAD"."LOADER_UNITS_OF_MEASURE"
INNER JOIN "LOAD"."UOM_TYPES" ON ("UOM_TYPES"."UOM_TYPE_CODE"="LOADER_UNITS_OF_MEASURE"."UOM_TYPE_CODE")
) SELECTION
WHERE ("SELECTION"."UOM_TYPE_ID"="UNITS_OF_MEASURE"."UOM_TYPE_ID")
AND ("SELECTION"."UOM_CODE"="UNITS_OF_MEASURE"."UOM_CODE")
)
WHERE EXISTS (SELECT "UOM_DESC", "UOM_SYMBOL", "UOM_MUL_FACTOR", "UOM_ADD_FACTOR", "UOM_DEC_PLACE", 0 AS "UOM_REFERENCE", NULL AS "UOM_SUBTYPE_ID"
FROM (SELECT DISTINCT "UOM_TYPE_ID", "UOM_CODE", "UOM_DESC", "UOM_SYMBOL", "UOM_MUL_FACTOR", "UOM_ADD_FACTOR", "UOM_DEC_PLACE"
FROM "LOAD"."LOADER_UNITS_OF_MEASURE"
INNER JOIN "LOAD"."UOM_TYPES" ON ("UOM_TYPES"."UOM_TYPE_CODE"="LOADER_UNITS_OF_MEASURE"."UOM_TYPE_CODE")
) SELECTION
WHERE ("SELECTION"."UOM_TYPE_ID"="UNITS_OF_MEASURE"."UOM_TYPE_ID")
AND ("SELECTION"."UOM_CODE"="UNITS_OF_MEASURE"."UOM_CODE")
)
Внутренний SELECT
запрос должен оставаться таким же, так как запрос будет автоматически составлен независимый от СУБД слой-запрос-запрос.
Я пытался, в частности, следующий синтаксис:
UPDATE "LOAD"."UNITS_OF_MEASURE"
SET "UOM_DESC" = i."UOM_DESC", "UOM_SYMBOL" = i."UOM_SYMBOL", "UOM_MUL_FACTOR" = i."UOM_MUL_FACTOR", "UOM_ADD_FACTOR" = i."UOM_ADD_FACTOR", "UOM_DEC_PLACE" = i."UOM_DEC_PLACE",
"UOM_REFERENCE" = 0, "UOM_SUBTYPE_ID" = NULL FROM
(SELECT "UOM_DESC", "UOM_SYMBOL", "UOM_MUL_FACTOR", "UOM_ADD_FACTOR", "UOM_DEC_PLACE", 0 AS "UOM_REFERENCE", NULL AS "UOM_SUBTYPE_ID"
FROM (SELECT DISTINCT "UOM_TYPE_ID", "UOM_CODE", "UOM_DESC", "UOM_SYMBOL", "UOM_MUL_FACTOR", "UOM_ADD_FACTOR", "UOM_DEC_PLACE"
FROM "LOAD"."LOADER_UNITS_OF_MEASURE"
INNER JOIN "LOAD"."UOM_TYPES" ON ("UOM_TYPES"."UOM_TYPE_CODE"="LOADER_UNITS_OF_MEASURE"."UOM_TYPE_CODE")
) SELECTION
WHERE ("SELECTION"."UOM_TYPE_ID"="UNITS_OF_MEASURE"."UOM_TYPE_ID")
AND ("SELECTION"."UOM_CODE"="UNITS_OF_MEASURE"."UOM_CODE")
)i
WHERE EXISTS (SELECT "UOM_DESC", "UOM_SYMBOL", "UOM_MUL_FACTOR", "UOM_ADD_FACTOR", "UOM_DEC_PLACE", 0 AS "UOM_REFERENCE", NULL AS "UOM_SUBTYPE_ID"
FROM (SELECT DISTINCT "UOM_TYPE_ID", "UOM_CODE", "UOM_DESC", "UOM_SYMBOL", "UOM_MUL_FACTOR", "UOM_ADD_FACTOR", "UOM_DEC_PLACE"
FROM "LOAD"."LOADER_UNITS_OF_MEASURE"
INNER JOIN "LOAD"."UOM_TYPES" ON ("UOM_TYPES"."UOM_TYPE_CODE"="LOADER_UNITS_OF_MEASURE"."UOM_TYPE_CODE")
) SELECTION
WHERE ("SELECTION"."UOM_TYPE_ID"="UNITS_OF_MEASURE"."UOM_TYPE_ID")
AND ("SELECTION"."UOM_CODE"="UNITS_OF_MEASURE"."UOM_CODE")
)
, но, к сожалению, "UNITS_OF_MEASURE"."UOM_TYPE_ID"
и "UNITS_OF_MEASURE"."UOM_CODE"
на линии 9-10 не могут быть решены.
Спасибо! Это работает, на самом деле я нашел одно и то же решение самостоятельно перед вашим сообщением. – Teejay