如何从案例语句中删除初始空值?



我有一个表格(DLVERYDAY(,一周中的每一天都有一列。如果客户将交货日期分配给某一天,则该天的列将设置为"Y"。我想将七天合并到一列中,例如"交货日",如果星期日列为"Y",则在交货日下,每个客户将显示为"星期日"。

我尝试与工会一起解决这个问题,但我就是无法得到我需要的东西。 第一次比较(与星期日比较时(始终显示为 NULL。 如果那天不是交货日或设置为 N,我不希望出现空值。

dbo.DLVERYDAY
ID        Location Name WH     Sun Mon Tue Wed Thu Fri Sat 
0000000 CUSTOMER1|LOCATION1     DO N   N   Y   N   N   N   Y
0000001 CUSTOMER2|LOCATION2     DO N   Y   N   N   N   Y   N
SELECT CUST_ID, CUSLOC_ID, CUSLOC_NAM, WH, 
(CASE WHEN DAY1 LIKE 'Y' THEN 'Sunday'END) AS  'Delivery Day' 
FROM dbo.DLVERYDAY WHERE CUSLOC_ID = '0000000' OR CUSLOC_ID = '0000001'
UNION 
SELECT CUST_ID, CUSLOC_ID, CUSLOC_NAM, WH, 
(CASE WHEN DAY2 = 'Y' THEN 'MONDAY' END) AS 'Delivery Day'  
FROM dbo.DLVERYDAY WHERE CUSLOC_ID = '0000000' OR CUSLOC_ID = '0000001'
UNION 
SELECT CUST_ID, CUSLOC_ID, CUSLOC_NAM, WH, 
(CASE WHEN DAY3 = 'Y' THEN 'TUESDAY' END) AS 'Delivery Day'
FROM dbo.DLVERYDAY WHERE CUSLOC_ID = '0000000' OR CUSLOC_ID = '0000001'
AND SO ON....

两个客户有多个交货日的示例。

Actual Result: 
ID         Location Name  WH    Delivery Day
0000000 CUSTOMER1|LOCATION1   DO    NULL
0000000 CUSTOMER1|LOCATION1   DO    SATURDAY
0000000 CUSTOMER1|LOCATION1   DO    TUESDAY
0000001 CUSTOMER2|LOCATION2   DO    NULL
0000001 CUSTOMER2|LOCATION2   DO    MONDAY
0000001 CUSTOMER2|LOCATION2   DO    THURSDAY
Expected Result: 
ID        Location Name   WH Delivery Day 
0000000 
CUSTOMER1|LOCATION1       DO Tuesday 
0000000 
CUSTOMER1|LOCATION1       DO Saturday 
0000001 
CUSTOMER2|LOCATION2       DO Monday 
0000001 
CUSTOMER2|LOCATION2       DO Friday

您可以使用 WHERE 子句代替 Case 语句。WHERE 子句将筛选出将为 NULL 的记录。这是周一和周二的示例,您可以重复并继续获取所有 7 天。这是最容易理解的答案。

SELECT CUST_ID
, CUSLOC_ID
, CUSLOC_NAM
, WH
, 'Monday' AS  'Delivery Day' 
FROM dbo.DLVERYDAY
WHERE (CUSLOC_ID = '0000000' OR CUSLOC_ID = '0000001')
AND Day1 = 'Y'
UNION ALL
SELECT CUST_ID
, CUSLOC_ID
, CUSLOC_NAM
, WH
, 'Tuesday' AS  'Delivery Day' 
FROM dbo.DLVERYDAY
WHERE (CUSLOC_ID = '0000000' OR CUSLOC_ID = '0000001')
AND Day2 = 'Y'

可能涵盖您尚未接触到的 SQL 主题的更复杂的解决方案是使用 UNPIVOT 函数。

这是有关UNPIVOT功能的文章的链接。这将帮助您规范化数据。

相关内容

  • 没有找到相关文章

最新更新