【发布时间】:2014-04-11 18:39:11
【问题描述】:
我正在使用 SQL Server 2005 并希望从我拥有的表中导出一些数据。但是,在此之前,我需要根据名为“VisitNumber”的字段更新状态列,该字段可以包含多个相同值的条目。我按以下方式设置了一张桌子。它有更多的专栏,但我只是输入与我的问题相关的内容
ID Name MyReport VisitNumber DateTimeStamp Status
-- --------- -------- ----------- ----------------------- ------
1 Test John Test123 123 2014-01-01 05.00.00.000
2 Test John Test456 123 2014-01-01 07.00.00.000
3 Test Sue Test123 555 2014-01-02 08.00.00.000
4 Test Ann Test123 888 2014-01-02 09.00.00.000
5 Test Ann Test456 888 2014-01-02 10.00.00.000
6 Test Ann Test789 888 2014-01-02 11.00.00.000
现场注释
- ID 列是增量编号中的唯一 ID
- MyReport 是一个文本值,实际上可以是数千个字符。为简单起见缩短。在我的场景中,文本会完全不同
- 其余字段为 varchar
我的目标
我需要解决两个条件下的“F”状态:
* 如果只有一个 VisitNumber,更新“F”的状态栏
* 如果访问次数多于一个,则以最早的时间戳记为“F”。对于其他的,将状态设置为“A”
所以回到我的桌子上,这是期望
ID Name MyReport VisitNumber DateTimeStamp Status
-- --------- -------- ----------- ----------------------- ------
1 Test John Test123 123 2014-01-01 05.00.00.000 F
2 Test John Test456 123 2014-01-01 07.00.00.000 A
3 Test Sue Test123 555 2014-01-02 08.00.00.000 F
4 Test Ann Test123 888 2014-01-02 09.00.00.000 F
5 Test Ann Test456 888 2014-01-02 10.00.00.000 A
6 Test Ann Test789 888 2014-01-02 11.00.00.000 A
我想我可以通过拆分每种类型的重复/三次+ (2,3,4,5) 来处理这个问题。然后每隔一个(或每 3、4、5 行)更新一次。然后从原始表中删除它们并将它们组合在一起以导出SSIS中的数据。但我认为有一种更有效的方法来处理它。
有什么想法吗?我可以通过直接在 SQL 中为此状态列更新表,然后通过 SSIS 正常导出来完成此操作。或者,如果有某种方法可以根据我需要的确切条件操作列,我可以在 SSIS 中完成所有操作。我只是不确定如何继续。
【问题讨论】:
标签: sql-server tsql sql-server-2005 ssis