我有一个表#CustomersStates,其中包含以下列:年,月,日,国家,州,客户
其中列出了每个州每天有多少客户。但是,当一天的客户为零时,Country,State和Customers显示为NULL。
我知道如何使用case when语句使Customers显示为0, 但有没有办法,如果有NULL,我可以将国家和州的每个可能组合作为新行插入?
答案 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)