什么东西(情况何时声明)?

时间:2010-12-11 08:52:39

标签: sql sql-server tsql

  

可能重复:
  WHERE Something IN (CASE WHEN statement) ??!!

我希望ro写一个“选择地点”的cluase与cinditonal条件 我在“where ID IN”子句中使用了“case-when”但是我有以下错误:

Msg 512, Level 16, State 1, Line 1
Subquery returned more than 1 value. This is not permitted when the subquery follows =, !=, <, <= , >, >= or when the subquery is used as an expression.

这是我的简化代码:

SELECT 
    UnitsAllocation.UnitID,
    OrganizationUnits.Title AS UnitTitle,
    'Title' AS ExpenseTitle1,
    SUM(UnitsAllocationDetails1.ExpenseAmount1) AS ExpenseAmount1
FROM
    [bdg_UnitsAllocation] UnitsAllocation LEFT OUTER JOIN 
(SELECT
            UnitsAllocationDetails.UnitsAllocationID, 
            SUM(UnitsAllocationDetails.Amount) / 1 AS ExpenseAmount1 
     FROM [bdg_UnitsAllocationDetails] UnitsAllocationDetails 
     WHERE UnitsAllocationDetails.ExpenseID IN (CASE 1 
                                                    WHEN 1 THEN (SELECT Id FROM bdg_Expenses WHERE ParentId = 1)
                                                    ELSE (SELECT Id FROM bdg_Expenses WHERE Id = 1) 
                                                END)

     GROUP BY UnitsAllocationDetails.UnitsAllocationID) UnitsAllocationDetails1 ON UnitsAllocationDetails1.UnitsAllocationID = UnitsAllocation.ID LEFT OUTER JOIN
    [bdg_OrganizationUnits] OrganizationUnits ON UnitsAllocation.UnitID = OrganizationUnits.ID
GROUP BY UnitsAllocation.UnitID, OrganizationUnits.Title

请看“WHERE UnitsAllocationDetails.ExpenseID IN ...
我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

而不是

WHERE UnitsAllocationDetails.ExpenseID IN(CASE 1                                                     WHEN 1 THEN(SELECT Id from bdg_Expenses WHERE ParentId = 1)                                                     ELSE(SELECT Id FROM bdg_Expenses WHERE Id = 1)                                                 结束) 使用以下

WHERE UnitsAllocationDetails.ExpenseID IN(SELECT Id FROM bdg_Expenses WHERE ParentId = 1 and 1 = 1                                  UNION ALL SELECT Id from bdg_Expenses WHERE Id = 1和1&lt;&gt; 1                                                 )