我試圖在同一個表上使用嵌套SELECT進行SQL查詢(表中的UID是多態的)。嵌套SELECT在事務SQL中返回NULL
問題是我的嵌套SELECT始終返回NULL。
下面是該查詢:
SELECT
Ent.UID,
Measurement.MeasurementClass AS Type,
Substation.TG8000_Name AS Station,
SUBSTRING(Measurement.TG8000_Name,1,5) AS Travee,
SUBSTRING(Measurement.TG8000_Name,6,8) AS Equipement,
Measurement.ClonedFromMeasurement,
(SELECT TOP 1 TG8000_Name
FROM [BD_Sonel_PTG].[dbo].[Measurement]
WHERE (UID=Measurement.ClonedFromMeasurement)) AS Template,
LongName.LongName AS Description,
Measurement.MeasurementUnit AS Units,
MeasurementLimit.LowLimit,
MeasurementLimit.HighLimit,
RTU.TG8000_Name AS RTUName,
RTU.RTUProtocol,
RTU.Configuration AS RTUConfiguration,
Telemetry.Address,
Measurement.DisplayName AS Display,
REPLACE(Measurement.MeasurementClass,' ','')+':'+REPLACE(Substation.TG8000_Name,' ','')+'.'+REPLACE(Measurement.TG8000_Name,' ','') AS Tren
FROM EntityName Ent
LEFT JOIN LongName ON Ent.UID = Longname.UID /* chaque point possède une description pour une langue donnée */
LEFT JOIN Measurement ON Ent.UID = Measurement.UID /* chaque point de type measurement possède des infos suppl dansla table Measurement */
LEFT JOIN Substation ON Measurement.Substation = Substation.UID /* chaque point est lié à l'UID d'une station (Table Substations) */
LEFT JOIN Telemetry ON Telemetry.DataSourceFor = Ent.UID /* 1 point télémétré est lié à une entrée de Telemetry (DataSourceFor) */
LEFT JOIN MeasurementLimit ON Ent.UID = MeasurementLimit.UID /* Chaque point de type measurement est lié à des paramètres limites */
LEFT JOIN RTU ON Telemetry.RTU = RTU.UID /* chaque point télémétré est associé à un l'UID d'un RTU dont les paramètres sont dans la table RTU */
/* LEFT JOIN EntityName Ent2 ON Ent.UID = Measurement.ClonedFromMeasurement*/
WHERE Ent.EntityType = 'Measurement'
ORDER BY Substation.TG8000_Name, Measurement.TG8000_Name;
GO
當我執行的嵌套一個硬編碼值9616選擇,它的作品!
... (SELECT TOP 1 TG8000_Name
FROM [BD_Sonel_PTG].[dbo].[Measurement]
WHERE (UID='9616')) AS Template,
...
所以我想這是進入Measurement.ClonedFromMeasurement不工作...
但是當你在查詢中看到的,我也輸出Measurement.ClonedFromMeasurement的價值看什麼在那裏,我正確地收到了我的9616的價值(這是逐行的變化)。
如何在我的嵌套查詢中訪問Measurement.ClonedFromMeasurement?
不,對不起,它沒有使:-( –
在子查詢中,變量是本地的...所以我不能訪問它沒有創建一個新的變量名稱(請參閱在這裏創建的變量Ent2 ) ...(SELECT TOP 1 Ent2.TG8000_Name FROM [BD_Sonel_PTG] [DBO]。[測定] ENT2 WHERE(Ent2.UID = Measurement.ClonedFromMeasurement))爲模板,) ... –