This SQL for using some purpose but even i give a sort clause(order by tdate) still it is not sorting date wise. how to rewrite to get 'tdate' column sorted:
SELECT TOP 100 PERCENT *
FROM (SELECT TOP 100 PERCENT tdate,
parti,
Abs(Sum(amtdr)) AS Dr,
Sum(amtcr) AS Cr,
nart
FROM dbo.dbo_dayb a
WHERE ( account = 'bank' )
GROUP BY idno,
tdate,
parti,
nart
UNION ALL
SELECT tdate,
parti,
amtdr,
amtcr,
nart
FROM dbo.dbo_dayb
WHERE ( account = N'PDC account' )
AND ( post = N'Cr' )) DERIVEDTBL
ORDER BY tdate
The following recommendations will help you in your SQL tuning process.
You'll find 3 sections below:
ALTER TABLE `dbo_dayb` ADD INDEX `dbo_dayb_idx_accoun_idno_tdate_parti_nart` (`account`,`idno`,`tdate`,`parti`,`nart`);
ALTER TABLE `dbo_dayb` ADD INDEX `dbo_dayb_idx_account_post` (`account`,`post`);
SELECT
TOP 100 PERCENT *
FROM
(SELECT
TOP 100 PERCENT a.tdate,
a.parti,
Abs(Sum(a.amtdr)) AS Dr,
Sum(a.amtcr) AS Cr,
a.nart
FROM
dbo.dbo_dayb a
WHERE
(
a.account = 'bank'
)
GROUP BY
a.idno,
a.tdate,
a.parti,
a.nart
UNION
ALL SELECT
dbo.dbo_dayb.tdate,
dbo.dbo_dayb.parti,
dbo.dbo_dayb.amtdr,
dbo.dbo_dayb.amtcr,
dbo.dbo_dayb.nart
FROM
dbo.dbo_dayb
WHERE
(
dbo.dbo_dayb.account = N'PDC account'
)
AND (
dbo.dbo_dayb.post = N'Cr'
)
) DERIVEDTBL
ORDER BY
DERIVEDTBL.tdate