用各种文本字符串替换NULL

时间:2015-08-05 18:24:25

标签: sql sql-server

我有一个表#CustomersStates,其中包含以下列:年,月,日,国家,州,客户

其中列出了每个州每天有多少客户。但是,当一天的客户为零时,Country,State和Customers显示为NULL。

我知道如何使用case when语句使Customers显示为0, 但有没有办法,如果有NULL,我可以将国家和州的每个可能组合作为新行插入?

1 个答案:

答案 0 :(得分:0)

您需要使用包含所有日期的表(或表变量)进行LEFT JOIN。

DECLARE @d TABLE
(
     Year INT,
     Month INT,
     Day INT
)

INSERT INTO @d (Year, Month, Day)
    ... -- populate the table variable

DECLARE @s TABLE
(
     State VARCHAR(50),
     Country VARCHAR(50)
)

-- populates states

SELECT *
FROM @d d
CROSS JOIN @s s
LEFT JOIN CustomersStates c ON d.Year=c.Year AND d.Month=c.Month and d.Day=c.Day

顺便说一句,当它为NULL时,显示0代替CASE WHEN,你可以使用ISNULL(columnName,0)