2012-02-07 36 views
1

我有一個運行良好的存儲過程,它是一個選擇查詢。我想使用當前查詢作爲子查詢來更改通過某些聚合返回的內容。目前的查詢返回的數據爲這樣:SQL Server子查詢幫助請嗎? (希望使用現有的select查詢作爲子查詢)

A 1/1/12 
A 1/2/12 
A 1/3/12 
B 2/1/12 
B 5/3/12 
B 5/5/12 

我想看到這是:

A 1/1/12 1/3/12 
B 2/1/12 5/5/12 

所以我想日期值的分鐘,然後將日期值的最大值,每股票的符號。下面是我想和堅持當前的存儲過程:

ALTER PROCEDURE dbo.sprocSymbsDatesForHistoricalPricingVol 

AS 

DECLARE @NxtAvailableDataDownloadDate date 

SET @NxtAvailableDataDownloadDate = dbo.NextAvailableDataDownloadDate() 

SELECT Symbol, TradingDate 
FROM (SELECT tblSymbolsMain.Symbol, tblTradingDays.TradingDate 
     FROM tblSymbolsMain CROSS JOIN 
     tblTradingDays 
     WHERE (tblTradingDays.TradingDate <= @NxtAvailableDataDownloadDate)) AS T1 
     WHERE (NOT EXISTS 
      (SELECT TradeDate, Symbol 
       FROM tblDailyPricingAndVol 
       WHERE (TradeDate = T1.TradingDate) AND (Symbol = T1.Symbol))) 
ORDER BY Symbol, TradingDate 

我嘗試來包裝選擇查詢作爲子查詢不工作...任何接受者?我相信這很簡單。在此先感謝...

回答

2
SELECT Symbol, MIN(TradingDate), Max(TradingDate) 
FROM (
SELECT Symbol, TradingDate 
FROM (SELECT tblSymbolsMain.Symbol, tblTradingDays.TradingDate 
     FROM tblSymbolsMain CROSS JOIN 
     tblTradingDays 
     WHERE (tblTradingDays.TradingDate <= @NxtAvailableDataDownloadDate)) AS T1 
     WHERE (NOT EXISTS 
      (SELECT TradeDate, Symbol 
       FROM tblDailyPricingAndVol 
       WHERE (TradeDate = T1.TradingDate) AND (Symbol = T1.Symbol)))) t 
GROUP BY Symbol 
+0

那不只是給我整個數據集的最小值/最大值的日期,同樣的每個記錄,而不是最小/最大爲實際的符號? (相關) – StatsViaCsh 2012-02-07 00:58:39

+0

+1。以大約三個字符和一個鼠標點擊來擊敗我。 :) – 2012-02-07 00:58:42

+0

不,因爲羣組。當然,你可以嘗試一下並找出答案。 :) – 2012-02-07 00:59:59

-2
create table TestTab(symbol char(1), date datetime) 


insert into TestTab values ('A','1/1/12') 
insert into TestTab values('A','1/2/12') 
insert into TestTab values('A','1/3/12') 
insert into TestTab values('B','2/1/12') 
insert into TestTab values('B','5/3/12') 
insert into TestTab values('B','5/5/12') 


select mi.symbol, mi.min_dt, ma.max_dt 
from 
(
    select symbol, min(date) min_dt 
    from TestTab 
    group by symbol 
) mi full outer join 
(

    select symbol, max(date) max_dt 
    from TestTab 
    group by symbol 
) ma on (mi.symbol = ma.symbol)