2013-03-03 86 views
1

我的表包含以下值:
[quote_date],[TOTAL_TIME],[supA_demB],[demA_supB],[demB_supA],[supB_demA]
如何获得时间价值倍数最大/最小值查询

我想运行这样的查询:

SELECT quote_date 
    ,min(demA_supB) as MinDemASupB 
    ,max(demA_supB) as MaxDemASupB 
    ,min(supA_demB) as MinSupADemB 
    ,max(supA_demB) as MaxSupADemB 
    ,min(demB_supA) as MinDemBSupA 
    ,max(demB_supA) as MaxDemBSupA 
    ,min(supB_demA) as MinSupBDemA 
    ,max(supB_demA) as MaxSupBDemA 
    FROM [dbo].[a_b_RatioTable] 
    GROUP BY quote_date 

有什么办法来TOTAL_TIME值添加到该查询中的每个混合/最大值?
像:

SELECT quote_date 
    ,min(demA_supB) as MinDemASupB 
    ,something as MinDemASupBTime 
    ,max(demA_supB) as MaxDemASupB 
    ,something as MinDemASupBTime... 
+0

你可以用期望的结果显示样品记录吗? – 2013-03-03 08:49:47

+0

quote_date \t \t MinDemASupB MaxDemASupB \t \t MinSupADemB MaxSupADemB \t \t MinDemBSupA MaxDemBSupA \t \t MinSupBDemA MaxSupBDemA \t 2006-01-01 0.0104795321637427 \t \t 0.0107321428571429 0.0105066977285964 \t \t 0.0108878092939046 91.8458408855336 \t \t 95.1773835920177 93.1780366056572 \t 95.4241071428571 这里是第一排我的查询我想知道是否有可能为每个值添加total_time列 – 2013-03-03 09:00:42

+0

您认为可以s是可读的?你试一试。 – abatishchev 2013-03-03 09:11:20

回答

1

试试这个,

SELECT quote_date 
    ,min(demA_supB) as MinDemASupB 
    ,(select total_time from [dbo].[a_b_RatioTable] where quote_date = r.quote_date and demA_supB = min(r.demA_supB)) MinDemASupBTotal 
    ,max(demA_supB) as MaxDemASupB 
    ,(select total_time from [dbo].[a_b_RatioTable] where quote_date = r.quote_date and demA_supB = max(r.demA_supB)) MaxDemASupBTotal 
    ,min(supA_demB) as MinSupADemB 
    ,(select total_time from [dbo].[a_b_RatioTable] where quote_date = r.quote_date and supA_demB = min(r.supA_demB)) MinSupADemBTotal 
    ,max(supA_demB) as MaxSupADemB 
    ,(select total_time from [dbo].[a_b_RatioTable] where quote_date = r.quote_date and supA_demB = max(r.supA_demB)) MaxSupADemBTotal 
    ,min(demB_supA) as MinDemBSupA 
    ....... 
    ,max(demB_supA) as MaxDemBSupA 
    ,min(supB_demA) as MinSupBDemA 
    ,max(supB_demA) as MaxSupBDemA 
    FROM [dbo].[a_b_RatioTable] r 
    GROUP BY quote_date 

注:子查询可能会降低性能。

+0

返回错误 消息512,级别16,状态1,行1 子查询返回多个值。当子查询遵循=,!=,<, <= , >,> =或当子查询用作表达式时,这是不允许的。 – 2013-03-06 09:30:25

+0

如果您的记录在一个报价日期有两个或更多相同的最小数字,则可能发生这种情况。在这种情况下,您应该决定使用哪个total_time并相应地应用逻辑。 – GayanSanjeewa 2013-03-06 22:31:21

+0

工作正常与前1和顺序在选择,虽然有点慢。 – 2013-04-19 12:07:03

0

只需添加另一列TOTAL_TIME。它会正常工作。

,min(demA_supB) as MinDemASupB 
,max(demA_supB) as MaxDemASupB 
,min(supA_demB) as MinSupADemB 
,max(supA_demB) as MaxSupADemB 
,min(demB_supA) as MinDemBSupA 
,max(demB_supA) as MaxDemBSupA 
,min(supB_demA) as MinSupBDemA 
,max(supB_demA) as MaxSupBDemA 
,total_time 
+0

谢谢,但我需要每个最小/最大值的时间 – 2013-03-03 09:50:40