мне нужно создать новый столбец, где следующий уважаются:T-SQL: Петля в сазе
Если всех
Order_ID
в одинID
имеетApproved
флаг иDenied
flag of , then flag Подтвержден. (Пример:ID 1
)Если все
Order_ID
в пределах одинID
имеютApproved
флаг иDenied
флаг , тогда как флаг запрещен. (Пример:ID 2
)Если некоторые
Order_ID
в пределах одногоID
имеютApproved
флаг иDenied
флаг и другие либо сApproved
флагом иDenied
флаг илиApproved
флаг иDenied
флаг , затем отметьте это как Утверждено частично. (Пример:ID 3
и6
)- Если любого
Order_ID
в пределах одинID
имеетApproved
флаг иDenied
флага независимо от другогоOrder_ID
в пределахID
, тогда флаг как Ошибка. (Пример:ID 4
) - Если все
Order_ID
в пределах одинID
имеютApproved
флаг иDenied
флаг , тогда как флаг В ожидании подтверждения.(Пример:ID 5
)
Это упрощенная таблица, я использую в качестве примера:
**ID Order_ID Approved Denied
1 101 1 0
2 201 0 1
2 202 0 1
1 102 1 0
4 401 0 1
3 301 0 1
6 601 0 1
1 103 1 0
3 302 1 0
3 303 0 0
5 501 0 0
4 402 1 0
6 602 1 0
5 502 0 0
4 403 1 1
5 503 0 0
и это результат я ожидаю:
**Id Order_ID Approved Denied Approval_status
1 101 1 0 Approved
2 201 0 1 Denied
2 202 0 1 Denied
1 102 1 0 Approved
4 401 0 1 Error
3 301 0 1 Partially approved
6 601 0 1 Partially approved
1 103 1 0 Approved
3 302 1 0 Partially approved
3 303 0 0 Partially approved
5 501 0 0 Pending Approval
4 402 1 0 Error
6 602 1 0 Partially approved
5 502 0 0 Pending Approval
4 403 1 1 Error
5 503 0 0 Pending Approval
Спасибо много заранее !! Я в основном смущен тем, как цикл в пределах одного ID
в заявлении CASE.
Не используйте петлю. Создайте столбец, затем сделайте 3 или 4 обновления, чтобы строить свои бизнес-правила в правильном порядке. ** NO LOOPS IN SQL! ** – Hogan
@hogan Как я могу оставаться только в одном ID? –
У вас нет, работа с наборами означает, что вы применяете изменение ко всем идентификаторам, которые отвечают требованиям. например, если вы группируете по id, вы можете сравнить счетчик (*) с суммой (*), чтобы узнать, является ли поле 1 для каждого элемента. – Hogan