- 我想在
RequestStatus_hod
为IN PROCESS
- 但查询似乎显示所有的数据通过忽略where子句
- 当你只显示数据可以看到,我试图重复
WHERE RequestStatus_hod = 'IN PROCESS'
但它只是显示为NULL
- 我试图使用临时列
RequestStatus_hods
并获得an invalid column error
SQL语句:是否可以使用临时列WHERE子句
SELECT DISTINCT
A.RequestNumber, A.EmployeeId,
STUFF((SELECT ', ' + CAST(B.RequestDetailsId AS VARCHAR(255))
FROM [dbo].[REQUISITION] C
JOIN [dbo].[REQUISITION_DETAILS] B ON C.RequestDetailsId = B.RequestDetailsId
WHERE C.RequestNumber = A.RequestNumber AND C.EmployeeId = A.EmployeeId -- AND RequestStatus_hod = 'IN PROCESS'
FOR XML PATH ('')), 1, 2, '') AS RequestDetailIds,
STUFF((SELECT ', ' + CAST(B.StockId AS VARCHAR(255))
FROM [dbo].[REQUISITION] C
JOIN [dbo].[REQUISITION_DETAILS] B ON C.RequestDetailsId = B.RequestDetailsId
JOIN [dbo].[STOCK] F ON F.StockId = B.StockId
WHERE C.RequestNumber = A.RequestNumber AND C.EmployeeId = A.EmployeeId -- AND RequestStatus_hod = 'IN PROCESS'
FOR XML PATH ('')), 1, 2, '') AS StockIds,
STUFF((SELECT ', ' + CAST(B.RequestQuantity AS VARCHAR(255))
FROM [dbo].[REQUISITION] C
JOIN [dbo].[REQUISITION_DETAILS] B ON C.RequestDetailsId = B.RequestDetailsId
WHERE C.RequestNumber = A.RequestNumber AND C.EmployeeId = A.EmployeeId -- AND RequestStatus_hod = 'IN PROCESS'
FOR XML PATH ('')), 1, 2, '') AS RequestQuantity,
STUFF((SELECT ', ' + G.ItemName
FROM [dbo].[REQUISITION] C
JOIN [dbo].[REQUISITION_DETAILS] B ON C.RequestDetailsId = B.RequestDetailsId
JOIN [dbo].[STOCK] F ON F.StockId = B.StockId
JOIN [dbo].[ITEM_MASTER] G ON F.ItemId = G.ItemId
WHERE C.RequestNumber = A.RequestNumber AND C.EmployeeId = A.EmployeeId -- AND RequestStatus_hod = 'IN PROCESS'
FOR XML PATH ('')), 1, 2, '') AS ItemNames,
STUFF((SELECT ', ' + CAST(F.StockQuantity AS VARCHAR(255))
FROM [dbo].[REQUISITION] C
JOIN [dbo].[REQUISITION_DETAILS] B ON C.RequestDetailsId = B.RequestDetailsId
JOIN [dbo].[STOCK] F ON F.StockId = B.StockId
WHERE C.RequestNumber = A.RequestNumber AND C.EmployeeId = A.EmployeeId -- AND RequestStatus_hod = 'IN PROCESS'
FOR XML PATH ('')), 1, 2, '') AS AvailableQuantity,
STUFF((SELECT ', ' + B.RequestStatus_hod
FROM [dbo].[REQUISITION] C
JOIN [dbo].[REQUISITION_DETAILS] B ON C.RequestDetailsId = B.RequestDetailsId
WHERE C.RequestNumber = A.RequestNumber AND C.EmployeeId = A.EmployeeId -- AND RequestStatus_hod = 'IN PROCESS'
FOR XML PATH ('')), 1, 2, '') AS RequestStatus_hods -- Temporary Column --
FROM
[dbo].[REQUISITION] A
JOIN
[dbo].[USER] D ON D.EmployeeId = A.EmployeeId
JOIN
[dbo].[REQUISITION_DETAILS] E ON E.EmployeeId = D.EmployeeId
WHERE
RequestStatus_hods = 'IN PROCESS' -- Col RequestStatus_hod FROM table REQUISITION_DETAILS --
结果:
它是** RequestStatus_hods **还是** RequestStatus_hod **,因为您的临时列说RequestStatus_hods,但您的where条件说RequestStatus_hod – CodingDefined 2014-12-04 04:39:32
@CodingDefined其实我想过滤临时列'RequestStatus_hods'。 'RequestStatus_hod'是表'REQUISITION_DETAILS'的原始列 – 2014-12-04 04:40:54
在最后一次选择的条件中添加条件'B.RequestStatus_hod ='IN PROCESS''。 – CodingDefined 2014-12-04 04:45:09