ReG_67
Дата: 23.02.2010 16:13:07
Есть табличная функция - вот её "тело":
RETURNS TABLE
AS
RETURN WITH table(ACC_ID, ACCOUNT, ISO ,DT,DBO,CRO,AMOUNT) AS
(
SELECT
A.ACC_ID
,A.ACCOUNT
,A.ISO COLLATE Latin1_General_BIN
,S.DT
,S.DBO
,S.CRO
,S.SALDO AMOUNT
FROM Core.Table1 AS S (NOLOCK)
INNER JOIN Core.Table 2 AS A (NOLOCK)
ON S.ACC_ID = A.ACC_ID
WHERE S.ACC_ID=@AccID
AND DT<(SELECT MAX(VALS) FROM Core.Table3(NOLOCK) ) UNION ALL
SELECT
ACC_ID,ACCOUNT, ISO,DT,DBO,CRO,AMOUNT
FROM dbo.Function1(@AccID,NULL,NULL)
)
SELECT
S.ACC_ID,
S.ACCOUNT,
S.ISO,
D.StartPeriod DT,
CASE WHEN IsVirtual=1 THEN 0 ELSE DBO END DBO,
CASE WHEN IsVirtual=1 THEN 0 ELSE CRO END CRO,
AMOUNT,
IsVirtual
FROM(
SELECT DL.FullDateAlternateKey StartPeriod,
MAX(S.DT) AS DT,
CASE WHEN DL.FullDateAlternateKey<>MAX(S.DT) THEN 1 ELSE 0 END IsVirtual
FROM Table4 AS DL WITH (INDEX(AK_DimTime_FullDateAlternateKey))
LEFT JOIN table AS S
ON DL.FullDateAlternateKey>=S.DT
WHERE DL.FullDateAlternateKey >= @StartDate AND DL.FullDateAlternateKey <= @EndDate
GROUP BY DL.FullDateAlternateKey
) D
INNER JOIN SALDOS S
ON D.DT=S.DT
хотелось бы, чтобы выдавалась таблица упорядоченная по дате DT. Ордеринг и оптимизаторы не работают, индексация не помогает.
Может есть какой-нибудь выход? Заранее спасибо!