Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 选择直到找到空值_Sql_Sql Server_Ssis_Etl - Fatal编程技术网

Sql 选择直到找到空值

Sql 选择直到找到空值,sql,sql-server,ssis,etl,Sql,Sql Server,Ssis,Etl,我有一个问题,我试图从列中选择,直到它标识空值。我无法使用行计数,因为我担心添加的新项目将更改行计数。因此,数据计数不是固定的,但3行为空是固定的 这是源代码示例 加载到SSIS后 SELECT [F1] FROM TEST_TBL WHERE F1 BETWEEN 'MTH' AND NULL 我的计划是从值MTH中进行选择,直到找到空的列并将其保存到新表中。另一个也一样,从YTD值中选择,直到找到空的列 到目前为止我还不能解决这个问题,我对SQL还是新手。谢谢如果您在SSIS流中添

我有一个问题,我试图从列中选择,直到它标识空值。我无法使用行计数,因为我担心添加的新项目将更改行计数。因此,数据计数不是固定的,但3行为空是固定的

这是源代码示例

加载到SSIS后

SELECT  [F1] FROM TEST_TBL WHERE F1 BETWEEN 'MTH' AND NULL 

我的计划是从值MTH中进行选择,直到找到空的列并将其保存到新表中。另一个也一样,从YTD值中选择,直到找到空的列


到目前为止我还不能解决这个问题,我对SQL还是新手。谢谢

如果您在SSIS流中添加原始excel行号并将其存储在SQL中,您可以轻松地选择所需的行,因为您现在有一组有序的行

设置:

IF OBJECT_ID('tempdb..#Excel') IS NOT NULL
    DROP TABLE #Excel

CREATE TABLE #Excel (
    ID INT IDENTITY, 
    CellContent VARCHAR(100))

INSERT INTO #Excel (
    CellContent)
VALUES
    ('MTH'),
    ('BANK FINANCING'),
    ('CLR A/C - ERROR'),
    ('COMPANY/CORPORATE'),
    ('NULL'),
    ('NULL'),
    ('NULL'),
    ('YTD'),
    ('Account Type'),
    ('BANK FINANCING'),
    ('CLR A/C - ERROR')
解决方案

DECLARE @v_StartingCellContent VARCHAR(100) = 'MTH' -- Change here the first value you want to be displayed from

DECLARE @v_LowerLimit INT = (SELECT MIN(E.ID) FROM #Excel AS E WHERE E.CellContent = @v_StartingCellContent)
DECLARE @v_HigherLimit INT = (SELECT MIN(E.ID) FROM #Excel AS E WHERE E.ID > @v_LowerLimit AND E.CellContent = 'NULL')

SELECT
    *
FROM
    #Excel AS T
WHERE
    T.ID >= @v_LowerLimit AND 
    (@v_HigherLimit IS NULL OR T.ID < @v_HigherLimit)
ORDER BY
    T.ID
ID  CellContent
1   MTH
2   BANK FINANCING
3   CLR A/C - ERROR
4   COMPANY/CORPORATE

SQL表表示无序集。除非有一列指定行的顺序,否则没有“first
NULL
”值。@EzLo为什么要在注释中回答这个问题?现在它不能被标记为已回答。@EzLo,但第二张桌子会很难吗?假设我添加了row count,其中RowNumber>9和RowNumber@EzLo,但是如果添加了MTH的新数据,它会影响行号,那么它会工作吗。因此,年初至今的行号不再是9。如果我错了,请纠正我?