SELECT DISTINCT servRole,
(SELECT PositionLongtext
FROM tblPositionMaster tpm
WHERE tsc.servRole = tpm.tblID) AS ServPositionID,
(SELECT EmployeeName
FROM tblEmployeeList te
WHERE tsc.ECNoServ = te.ECNo
AND te.PeriodName = @PeriodName) AS SERVName,
(SELECT ECNo
FROM tblEmployeeList tl
WHERE tsc.ECNoServ = tl.ECNo
AND tl.PeriodName = @PeriodName) AS ECNoServ,
CustRole,
(SELECT PositionLongtext
FROM tblPositionMaster tpm
WHERE tsc.CustRole = tpm.tblID) AS CustPositionID,
(SELECT EmployeeName
FROM tblEmployeeList tm
WHERE tsc.ECNOCust = tm.ECNo
AND tm.PeriodName = @PeriodName) AS CUSTName,
(SELECT ECNo
FROM tblEmployeeList tel
WHERE tsc.ECNOCust = tel.ECNo
AND tel.PeriodName = @PeriodName) AS ECNOCust,
(SELECT DirectoryName
FROM tblAttributeDirectory td
WHERE td.DirectoryID = tsc.DirectoryID) AS DirectoryName,
(SELECT DirectoryID
FROM tblAttributeDirectory td
WHERE td.DirectoryID = tsc.DirectoryID) AS DirectoryID,
FinalscoreEmp,
Flag
FROM tblServToCustMapping tsc
WHERE tsc.PeriodName = @PeriodName
ORDER BY ECNoServ
Asked
Active
Viewed 279 times
-5

Martin Smith
- 438,706
- 87
- 741
- 845

Sudhir Yadav
- 124
- 1
- 9
-
4I can't see a question anywhere – cameronjonesweb Dec 28 '13 at 11:07
-
3you could rewrite that query to be much simpler – Mitch Wheat Dec 28 '13 at 11:07
-
There is no any inex.But I will create it. I am not good in sql. – Sudhir Yadav Dec 28 '13 at 11:14
-
@SudhirYadav - You should read this http://stackoverflow.com/questions/3449814/sql-server-equivelant-to-msqsls-explain – Ed Heal Dec 28 '13 at 11:16
-
Read a basic SQL tutorial, look for the INNER JOIN chapter – Vland Dec 28 '13 at 17:49
1 Answers
1
You can rewrite the query using JOIN
s instead of the correlated subquery:
SELECT DISTINCT
servRole,
tpm.PositionLongtext AS ServPositionID,
te.EmployeeName AS SERVName,
tl. ECNo AS ECNoServ,
CustRole,
tpm.PositionLongtext AS CustPositionID,
tm.EmployeeName AS CUSTName,
tel.ECNo AS ECNOCust,
td2.DirectoryName AS DirectoryName,
td2.DirectoryID AS DirectoryID,
FinalscoreEmp,
Flag
FROM tblServToCustMapping tsc
INNER JOIN tblPositionMaster tpm ON tsc.servRole = tpm.tblID
INNER JOIN tblEmployeeList te ON tsc.ECNoServ = te.ECNo
INNER JOIN tblEmployeeList tl ON tsc.ECNoServ = tl.ECNo
INNER JOIN tblPositionMaster tpm ON tsc.CustRole = tpm.tblID
INNER JOIN tblEmployeeList tm ON tsc.ECNOCust = tm.ECNo
INNER JOIN tblEmployeeList tel ON tsc.ECNOCust = tel.ECNo
INNER JOIN tblAttributeDirectory td1 ON td.DirectoryID = tsc.DirectoryID
INNER JOIN tblAttributeDirectory td2 ON td.DirectoryID = tsc.DirectoryID
WHERE tsc.PeriodName = @PeriodName
AND te.PeriodName = @PeriodName
AND tl.PeriodName = @PeriodName
AND tel.PeriodName = @PeriodName
AND tm.PeriodName = @PeriodName
ORDER BY ECNoServ;

Mahmoud Gamal
- 78,257
- 17
- 139
- 164
-
It gives error, 'The multi-part identifier "t1.ECNo" could not be bound.' – Sudhir Yadav Dec 28 '13 at 11:28
-
@SudhirYadav - Sorry it is `tl` instead of `t1` I updated my answer try my eidt. – Mahmoud Gamal Dec 28 '13 at 11:29