使用SQL Server 2000 表
CARDNO CARDEVENTDATE CARDEVENTDATE CARDEVENTTIME
ADJUSTED
0121 20090611 20090610 025050
0121 20090611 20090611 040000
0121 20090611 20090611 050000
0121 20090612 20090611 020000
0122 20090611 20090611 030001
0122 20090612 20090611 030000
0123 20090611 20090611 080000
0123 20090611 20090611 100000
0123 20090611 20090611 132449
0123 20090612 20090611 025959
0124 20090611 20090610 030000
0124 20090612 20090612 030001
0125 20090611 20090611 030002
0125 20090612 20090612 040000
从上表我想显示特定卡事件调整日期的银泰和停机时间
离开CardEventDate。
我想要显示Cardno,CardeventDateAdjusted,Cardeventtime
Cardno – 121
CardeventDateAdjusted - 20090611
Intime – 040000, Outtime – 020000
Cardno – 121
CardeventDateAdjusted - 20090610
Intime – 025050, Outtime – No
Cardno – 122
CardeventDateAdjusted - 20090611
Intime – 030001, Outtime – 030000
.........。所以,
银泰应> 030000和Outtime应该< 030001根据cardeventdateadjusted。
在Cardeventtime列中,First值应采用Intime,Last值应根据Cardno,Cardeventdateadjusted进行Outtime。
预期输出就像这样。
CARDNO CARDEVENTDATE INTIME OUTTIME
ADJUSTED
0121 20090611 040000 020000
0121 20090610 025050 -
0122 20090611 030001 030000
0123 20090611 080000 025959
0124 20090610 030000 -
0124 20090612 030001 -
0125 20090612 040000 -
0125 20090611 030002 -
输出时间中有空白列,因为日期上没有外出时间。所以我需要像这样的输出。
答案 0 :(得分:0)
好的,我知道这会很难看,但你可以做......
SELECT CARDNO,
Min(CardEvenDateAdjusted),
Max(CardEvenDateAdjusted)
FROM (
SELECT CARDNO,
CARDEVENTDATE,
(1000000 * CAST (CARDEVENTDATE AS BIGINT) +
CAST (CARDEVENTTIME AS BIGINT) - 30001) / 1000000 AS CardEvenDateAdjusted,
CARDEVENTTIME
FROM T_CARDEVENT
WHERE (CARDEVENTDATE > 20090601)
)
GROUP
BY CARDNO
ORDER
BY CARDNO
答案 1 :(得分:0)
编辑:编辑中的问题被修改为长而详细的答案与其当前状态无关,所以我也是从头开始重新开始。
请求含糊不清(它从未清楚地指明了什么是intime和什么是outtime)并且显然是矛盾的。例如,一个请求是:
Cardno – 121 CardeventDateAdjusted - 20090610 Intime – 025050, Outtime – No
但另一个指定点是
Intime should > 030000 and Outtime should < 030001 according to the cardeventdateadjusted.
问题中只有零信息,因为它现在代表的是“根据”可能意味着什么(它可能暗示或要求的算术操作)。忽略这个完全没有说明的条件,你要求看到025050并且还要求它是&gt; 030000:算术法则禁止。
我浪费了太多时间试图阅读你的思想,解决矛盾和含糊之处 - 这太荒谬了。除非下一个编辑产生一个明确的,非模糊的,不矛盾的规范,否则我不在这里。