我有一个Excel文件,可以使用SQL Server命令从中导入数据。该命令运行正常,但是当我使用特定的case语句时,它似乎可以过滤掉数据。我在网上找不到有关CASE过滤行的任何信息,所以我想在这里问。
此代码返回大约8000行
SET DATEFIRST 1;
SELECT
*,
CASE
WHEN [Artikelnummer] = 'Extern'
THEN [Artikel SFC]
ELSE [Artikel Omschrijving]
END AS [Artikel Omschrijving 2],
date.DifInDays([Actueel Geplande Leverdatum], [Geplande Leverdatum]) AS [Te Laat Dagen],
date.DifInDays([Geplande Leverdatum], [Orderdatum]) / 7 * 5 AS [Gevraagde Dlt],
FROM
I_TN_Exp_PUR_tdpur041_004_2
WHERE
[bedrijf] = 103;
此代码仅返回约70行。
SET DATEFIRST 1;
SELECT
*,
CASE
WHEN [Artikelnummer] = 'Extern'
THEN [Artikel SFC]
ELSE [Artikel Omschrijving]
END AS [Artikel Omschrijving 2],
date.DifInDays([Actueel Geplande Leverdatum], [Geplande Leverdatum]) AS [Te Laat Dagen],
date.DifInDays([Geplande Leverdatum], [Orderdatum]) / 7 * 5 AS [Gevraagde Dlt],
CASE
WHEN (date.DifInDays([Geplande Leverdatum], [Orderdatum]) / 7 * 5) >= [levertijd ITM]
AND (date.DifInDays([Geplande Leverdatum], [Orderdatum]) / 7 * 5) >= [dlt bevestigd]
THEN 'OK'
WHEN (date.DifInDays([Geplande Leverdatum], [Orderdatum]) / 7 * 5) >= [levertijd ITM]
AND (date.DifInDays([Geplande Leverdatum], [Orderdatum]) / 7 * 5) < [dlt bevestigd]
THEN 'NOK'
WHEN (date.DifInDays([Geplande Leverdatum], [Orderdatum]) / 7 * 5) < [levertijd ITM]
AND (date.DifInDays([Geplande Leverdatum], [Orderdatum]) / 7 * 5) >= [dlt bevestigd]
THEN 'OK+'
WHEN (date.DifInDays([Geplande Leverdatum], [Orderdatum]) / 7 * 5) < [levertijd ITM]
AND (date.DifInDays([Geplande Leverdatum], [Orderdatum]) / 7 * 5) < [dlt bevestigd]
THEN 'OK/NOK'
ELSE 'NOK'
END AS [doorlooptijdcheck]
FROM
I_TN_Exp_PUR_tdpur041_004_2
WHERE
[bedrijf] = 103;
case语句用于生成可在文档中过滤的值([doorlooptijdcheck])。
在某些值上,分配了OK / NOK / OK + / NOK | OK。
为什么when语句过滤掉行?
我了解到[Dlt bevestigd]在该行中(空白),之后它停止返回记录。我试过使用[Dlt bevestigd] ='(blank)'然后使用'no data'来排除它,但那没有用。使用Cast将[Dlt bevestigd]转换为int也不起作用。似乎(空白)值正在退出sql命令。