案例何时限制返回的SQL Server 2008年的行

时间:2018-12-13 16:45:27

标签: sql-server sql-server-2008

我有一个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命令。

0 个答案:

没有答案