我有一個運行SQL Server Express數據庫的系統,我需要從中提取一些數據。我創建了基本的SQL查詢,但是我發現有些數據位於其他地方。SQL查詢從另一個表中提取數據IF NULL
基本前提是我有修理訂單,車輛和客戶的數據庫。車輛通常通過VIN解碼器添加,因此它們具有來自MAKE和MODEL表的ID關聯。但是在VIN不解碼的情況下,應用程序允許用戶手動輸入此信息,然後將其存儲在另一個名爲「UserVehicleAttributes」的表中。在此表中有VehicleID,AttributeName,& AttributeValue。
UserAttributeId VehicleId AttributeName AttributeValue
-----------------------------------------------------------
364 6829 Model Sedona
365 6830 Make Kia
366 6830 Model Sedona
所以我需要的是,如果品牌或型號的車輛臺出現爲NULL,我可以顯示的內容,如手動輸入。
我發現,在DB的現有功能看起來能夠做我所需要的,但我不知道如何將它用作我的查詢的一部分。
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER FUNCTION [SM].[fnVehicleModelName]()
RETURNS TABLE
AS
RETURN
(
\t SELECT DISTINCT v.VehicleId,
\t \t CASE
\t \t \t WHEN v.SubModelId IS NULL THEN ISNULL(ua.[AttributeValue],'')
\t \t \t ELSE smm.[Name]
\t \t END as Model
\t FROM SM.Vehicle v (NOLOCK)
\t LEFT OUTER JOIN
(SELECT sm.SubModelId, m.[Name] + ' ' + sm.[Name] as Name
FROM DMV.SubModel (NOLOCK) sm
\t \t \t \t \t INNER JOIN DMV.Model m (NOLOCK)
\t \t \t \t \t \t \t ON sm.ModelId = m.ModelId) as smm
ON v.SubModelId = smm.SubModelId
LEFT OUTER JOIN SM.UserVehicleAttributes ua (NOLOCK)--
\t \t \t ON v.VehicleId = ua.VehicleId and ua.AttributeName = 'Model'
任何幫助是極大的讚賞。我對SQL不太好(顯然),但我試圖找出這一點。
一對夫婦澄清的問題:(1)其他表格的結構是什麼? (2)是在任何/所有表格之間共享的標識符? – Chris
對於空結果,是否返回一行作爲make,null ...或者'make'是否完全不出現? – Twelfth