创建视图时在子查询中使用合并
Use coalesce in a subquery while creating a view
我目前正在尝试制作一个视图,以显示已购买汽车(新车或二手车)的客户名称,并且当客户名称为 NULL 时需要显示 "NA"。
IF OBJECT_ID ('V_PrixSuperieurMoyenne','V') IS NOT NULL
DROP VIEW V_PrixSuperieurMoyenne;
GO
CREATE VIEW V_PrixSuperieurMoyenne
AS
(
SELECT
CS.[State],
CI.ListPrice,
CI.CarInventoryID,
COALESCE(CONCAT(C.Name, ' ', C.FirstName), 'NA') AS 'Nom du Client',
(
SELECT AVG(CI.ListPrice)
FROM CarInventory CI
INNER JOIN CarState CS ON CS.CarStateID = CI.CarStateID
WHERE CS.State = 'New'
) AS 'Prix Moyen Neuf'
FROM
CarInventory CI
INNER JOIN CarState CS ON CS.CarStateID = CI.CarStateID
LEFT JOIN Invoice I ON I.CarInventoryID = CI.CarInventoryID
LEFT JOIN Client C ON C.ClientID = I.ClientID
GROUP BY
CS.State,
CI.ListPrice,
CI.CarInventoryID,
CONCAT(C.Name , ' ', C.FirstName)
)
GO
SELECT *
FROM V_PrixSuperieurMoyenne
ORDER BY 1,2
GO
这是我的代码,但是当我尝试 运行 代码时,COALESCE 似乎不起作用,当名称为 NULL 时,它只显示一个空字符串。我需要它来显示 'NA'。
当 C.Name
和 C.FirstName
为 NULL 时,CONCAT
函数将 return ' '。但是,如果将 CONCAT
替换为字符串添加,您将得到预期的 NULL
,因为一行字符串添加中的单个 NULL
值会使整个字符串无效。
-- Returns 'NA' when C.Name or C.FirstName are NULL.
COALESCE(C.Name + ' ' + C.FirstName,'NA')
您也可以将 COALESCE
替换为 ISNULL
,因为您只检查单个项目的无效性:
ISNULL(C.Name +' ' + C.FirstName,'NA')
请务必在您的 GROUP BY
中进行此更改。
COALESCE
通常用于检查多个项目是否 NULL
.
我目前正在尝试制作一个视图,以显示已购买汽车(新车或二手车)的客户名称,并且当客户名称为 NULL 时需要显示 "NA"。
IF OBJECT_ID ('V_PrixSuperieurMoyenne','V') IS NOT NULL
DROP VIEW V_PrixSuperieurMoyenne;
GO
CREATE VIEW V_PrixSuperieurMoyenne
AS
(
SELECT
CS.[State],
CI.ListPrice,
CI.CarInventoryID,
COALESCE(CONCAT(C.Name, ' ', C.FirstName), 'NA') AS 'Nom du Client',
(
SELECT AVG(CI.ListPrice)
FROM CarInventory CI
INNER JOIN CarState CS ON CS.CarStateID = CI.CarStateID
WHERE CS.State = 'New'
) AS 'Prix Moyen Neuf'
FROM
CarInventory CI
INNER JOIN CarState CS ON CS.CarStateID = CI.CarStateID
LEFT JOIN Invoice I ON I.CarInventoryID = CI.CarInventoryID
LEFT JOIN Client C ON C.ClientID = I.ClientID
GROUP BY
CS.State,
CI.ListPrice,
CI.CarInventoryID,
CONCAT(C.Name , ' ', C.FirstName)
)
GO
SELECT *
FROM V_PrixSuperieurMoyenne
ORDER BY 1,2
GO
这是我的代码,但是当我尝试 运行 代码时,COALESCE 似乎不起作用,当名称为 NULL 时,它只显示一个空字符串。我需要它来显示 'NA'。
当 C.Name
和 C.FirstName
为 NULL 时,CONCAT
函数将 return ' '。但是,如果将 CONCAT
替换为字符串添加,您将得到预期的 NULL
,因为一行字符串添加中的单个 NULL
值会使整个字符串无效。
-- Returns 'NA' when C.Name or C.FirstName are NULL.
COALESCE(C.Name + ' ' + C.FirstName,'NA')
您也可以将 COALESCE
替换为 ISNULL
,因为您只检查单个项目的无效性:
ISNULL(C.Name +' ' + C.FirstName,'NA')
请务必在您的 GROUP BY
中进行此更改。
COALESCE
通常用于检查多个项目是否 NULL
.