Hi,
I've encountered a query [SQL Server] that has multiple sub selects and I wonder if I can get some help in how to approach/understand it.
I'd appreciate any pointers.
I've summarized the sql to remove fieldnames etc - but what I need is just an overview of how to approach sql with so many subselects.
Currently, I am kind of reading each select level and trying to figure out what's going on and what it is feeding to the previous level.
But I'm basically scratching my head . . . 
The sql below is not meant to be syntactically or structurally correct - just a rough idea of all the nested sub-selects ...
Thanks in advance!!
Code:
Select * from (SELECT fldnames, ...
FROM
(SELECT fldnames, ...
FROM G_TS AS gt
INNER JOIN Statements ...
LEFT JOINS ...
INNER JOIN ...
(SELECT ...
FROM ...
INNER JOIN ...
INNER JOIN
(SELECT ...
FROM ...
INNER JOIN ...
WHERE (BR.fldname = 'Y')) AS a
LEFT OUTER JOIN
(SELECT ...
FROM
(SELECT fldnames...
CAST(FLS.fldname AS dec(18, 2)) AS FeeTot
CAST(DLY.fldname AS dec(18, 2)) AS LAmt,
CAST (
(SELECT FLS.fldname / DY.fldname * 100 AS TB) AS DEC(5, 3)) AS TotalBS
FROM tblname
INNER JOIN ...
LEFT OUTER JOIN ..
WHERE (Ff.HC <> 'sometext')
AND (FS.fldname = ###)
AND (FV.fldname <> 0)) AS b_2) AS c ON c.LUM = a.LUM
LEFT OUTER JOIN
(SELECT fldnames ...
FROM
(SELECT fldnames
FROM LPRCADJ AS L
INNER JOINS
LEFT OUTER JOIN ...
WHERE (fldname IN
(SELECT ...
FROM
(SELECT fldname,
CONVERT(date, MODIFY_DATE) AS MODIFY_DATE
FROM LCDJ AS l2) AS b_1
WHERE (LNUM = a_1.LM)
AND (MOD_DTE BETWEEN @StDte AND @EndDte)))) AS d_1 ON d_1.LN = a.LN
LEFT JOIN
(SELECT ...
FROM
(SELECT DISTINCT fldnames
FROM RMT) AS a
LEFT OUTER JOIN
(SELECT fldnames
FROM tblname
WHERE charindex('SM', fldname, 1)> 0) AS b ON a.LNM = b.LNM and a.slno = b.RSNO
where b.RK_TYP is not null
GROUP BY TTSG, b.rmk_typ, a.lnum) x
on x.lnum = a.LNUM
where a.PRMB = 'Y'
AND (a.[CHKLNST] IS NULL OR a.[CHKLNST] = 'N')) z