Please start any new threads on our new site at https://forums.sqlteam.com. We've got lots of great SQL Server experts to answer whatever question you can come up with.

 All Forums
 SQL Server 2008 Forums
 Transact-SQL (2008)
 Select Top 1 in a Group by SQL QUERY?

Author  Topic 

anthor
Starting Member

14 Posts

Posted - 2012-09-19 : 01:05:14
SELECT
Tbl_Account.AccNo,
SUM( case when TransType_ID = 0 then Amount else 0 end ) as Total_Adjustment,
SUM( case when TransType_ID = 1 then Amount else 0 end ) as Total_Topup,
SUM( case when TransType_ID = 2 then Amount else 0 end ) as Total_Comm,
SUM( case when TransType_ID = 3 then Amount else 0 end ) as Total_Transfer,
SUM( case when TransType_ID = 4 then Amount else 0 end ) as Total_RecvTransfer,
SUM( case when TransType_ID = 2 AND Tbl_Topup.Topup_Company='M' then Amount else 0 end ) as Total_Maxis,
SUM( case when TransType_ID = 2 AND Tbl_Topup.Topup_Company='D' then Amount else 0 end ) as Total_Digi,
SUM( case when TransType_ID = 2 AND Tbl_Topup.Topup_Company='C' then Amount else 0 end ) as Total_Celcom,
(SELECT Top 1 Amount as Open_Balance)<<---how to do this at here?i want to get the first Amount as Opening Balance
FROM Tbl_Account
LEFT JOIN Tbl_Transaction ON Tbl_Account.AccNo = Tbl_Transaction.Transaction_AccNo AND (SELECT convert(Date,Tbl_Transaction.Transaction_Date, 105)) BETWEEN (SELECT convert(Date,'16-9-2012', 105)) AND (SELECT convert(Date,'30-9-2012', 105))
LEFT JOIN Tbl_Topup ON Tbl_Transaction.Topup_ID=Tbl_Topup.Topup_ID
Group By Tbl_Account.AccNo
ORDER BY Tbl_Account.AccNo

webfred
Master Smack Fu Yak Hacker

8781 Posts

Posted - 2012-09-19 : 02:31:54
Please give table structure, sample data and wanted result.


Too old to Rock'n'Roll too young to die.
Go to Top of Page

Andy Hyslop
Starting Member

14 Posts

Posted - 2012-09-19 : 04:22:44
Hi

A complete shot in the dark as no idea of your tables or what you are trying to achieve, maybe this can point you in the right direction:



SELECT

Tbl_Account.AccNo,
SUM(OBAL,Amount) AS OpeningBalance
SUM( CASE WHEN TransType_ID = 0 THEN Amount ELSE 0 END ) AS Total_Adjustment,
SUM( CASE WHEN TransType_ID = 1 THEN Amount ELSE 0 END ) AS Total_Topup,
SUM( CASE WHEN TransType_ID = 2 THEN Amount ELSE 0 END ) AS Total_Comm,
SUM( CASE WHEN TransType_ID = 3 THEN Amount ELSE 0 END ) AS Total_Transfer,
SUM( CASE WHEN TransType_ID = 4 THEN Amount ELSE 0 END ) AS Total_RecvTransfer,
SUM( CASE WHEN TransType_ID = 2 AND Tbl_Topup.Topup_Company='M' THEN Amount ELSE 0 END ) AS Total_Maxis,
SUM( CASE WHEN TransType_ID = 2 AND Tbl_Topup.Topup_Company='D' THEN Amount ELSE 0 END ) AS Total_Digi,
SUM( CASE WHEN TransType_ID = 2 AND Tbl_Topup.Topup_Company='C' THEN Amount ELSE 0 END ) AS Total_Celcom,

FROM Tbl_Account

LEFT JOIN Tbl_Transaction
ON Tbl_Account.AccNo = Tbl_Transaction.Transaction_AccNo
AND (SELECT CONVERT(DATE,Tbl_Transaction.Transaction_Date, 105)) BETWEEN (SELECT CONVERT(DATE,'16-9-2012', 105)) AND (SELECT CONVERT(DATE,'30-9-2012', 105))

LEFT JOIN Tbl_Topup
ON Tbl_Transaction.Topup_ID=Tbl_Topup.Topup_ID

LEFT JOIN
( SELECT TOP 1
Amount
AccNo
FROM
Tbl_Account
ORDER BY

<SOMETHING>

) AS OBAL
ON Tbl_Account.AccNo = OBAL.AccNo


GROUP BY
Tbl_Account.AccNo

ORDER BY
Tbl_Account.AccNo



Andy
Go to Top of Page
   

- Advertisement -