我有以下SQL:SQL查詢語句由錯誤造成因組(列無效)
DECLARE @EmpId AS Varchar(20),
@CompanyId as VARCHAR(20),
@DepartmentId AS VARCHAR(20),
@DesignationId AS VARCHAR(20),
@GradeId AS VARCHAR(20),
@FromDate AS DATE,
@TillDate AS DATE
SET @EmpId = null
SET @CompanyId = NULL
SET @DepartmentId = NULL
SET @DesignationId = NULL
SET @GradeId = NULL
SET @FromDate = '1-1-2015'
SET @TillDate = '1-1-2016'
SELECT
LA.EmpId,AT.IsPaid AS 'IsPaid',
AT.AttendanceTypeCode,
(SELECT DISTINCT IsPaid
FROM LeaveApproval
WHERE empid = LA.EmpId) AS 'testPAID',
SUM(CASE WHEN AT.IsPaid = 1 THEN 1 END) AS Paid,
COUNT(CASE WHEN AT.IsPaid = 0 THEN AT.AttendanceTypeCode END) AS UnPaid,
COUNT(AT.AttendanceTypeCode) AS LeaveCount
FROM
LeaveApproval LA
INNER JOIN
AttendanceTypes AT ON LA.AttendanceTypeId = AT.AttendanceTypeId
INNER JOIN
EmpMaster EM ON LA.Empid = EM.EmpId
WHERE
EM.ActiveInActive <> 1 AND
EM.EmpId = CASE WHEN ISNULL(@EmpId ,'-1') <> '-1' AND @EmpId <> ''
THEN @EmpId
ELSE EM.EmpId
END
AND EM.CompanyId = CASE WHEN ISNULL(@CompanyId ,'-1') <> '-1' AND @CompanyId <> ''
THEN @CompanyId
ELSE EM.CompanyId
END
AND EM.DepartmentId = CASE WHEN ISNULL(@DepartmentId,'-1') <> '-1' AND @DepartmentId<> ''
THEN @DepartmentId
ELSE EM.DepartmentId
END
AND ISNULL(EM.DesignationId, '') = CASE WHEN ISNULL(@DesignationId ,'-1') <> '-1' AND @DesignationId <> '' THEN @DesignationId ELSE ISNULL(EM .DesignationId,'') END
AND ISNULL(EM.GradeId,'') = CASE WHEN ISNULL(@GradeId ,'-1') <> '-1' AND @GradeId <> '' THEN @GradeId ELSE ISNULL(EM .GradeId,'') END
AND FromDate BETWEEN @FromDate AND @TillDate
GROUP BY
LA.EmpID, AT.AttendanceTypeCode, AT.IsPaid, Paid, UnPaid
以上SQL是行不通的。
我得到一個錯誤
列
Paid
和InPaid
無效。
我知道'付費'和Unpaid
來自子查詢並且不能在選擇列表的組中使用。
我的問題是如何才能實現上述結果運行我的SQL我的成果應該重複相同的值,該值總和Paid
每個empid
任何幫助將不勝感激
你沒有在'case'語句中指定其他部分可能導致問題'SUM(CASE WHEN AT.IsPaid = 1 Then 1 else END)as'付費' – Harsh
' ELSE'是可選的。當沒有指定ELSE時,隱含「ELSE NULL」。 – Andrew