Sql 选择直到找到空值
我有一个问题,我试图从列中选择,直到它标识空值。我无法使用行计数,因为我担心添加的新项目将更改行计数。因此,数据计数不是固定的,但3行为空是固定的 这是源代码示例 加载到SSIS后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流中添
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。如果我错了,请纠正我?