2013-04-16 73 views
6

Tôi đang cố thực hiện một số câu lệnh "if" trong mệnh đề where. Tôi nhận ra rằng sql không hỗ trợ này, nhưng tôi chắc chắn phải có một số cách để làm cho công việc này với cú pháp sql. Như thể hiện trong khu vực tôi có in đậm tôi đang cố gắng tìm tất cả các mục bắt đầu bằng d và lọc chúng ra nếu userfld2 của họ cũng = container.Thực hiện câu lệnh "if" trong câu sql ở khoản

Có cách nào hợp lý hơn để thực hiện điều này hơn tôi đang thực hiện hoặc tôi có rời khỏi điểm không?

Xin cảm ơn trước.

Select a.ItemID 
    , b.ConversionFactor VCaseAmt 
    , sum(c.ConversionFactor + 1) SCaseAmt 
    , a.status 
    , a.UserFld2 
From timItem a 
inner join timItemUnitOfMeas b on a.ItemKey = b.ItemKey 
    and b.TargetUnitMeasKey = 115 
left join timItemUnitOfMeas c on a.ItemKey = c.ItemKey 
    and c.TargetUnitMeasKey = 116 
left join timItemUnitOfMeas d on a.ItemKey = d.ItemKey 
    and d.TargetUnitMeasKey = 126 
Where d.TargetUnitMeasKey is null 
    and b.ConversionFactor != c.ConversionFactor + 1 
    and a.Status = 1 
    and **(filter a.itemid not like 'd%' when a.userfld2 = 'Container')** 
Group by a.ItemID, b.TargetUnitMeasKey, b.ConversionFactor, C.TargetUnitMeasKey 
    , c.ConversionFactor, a.status, a.UserFld2 
Order by a.ItemID 
+1

lọc a.itemid không thích 'd%' ** và ** a.userfld2 = 'container'? – NINCOMPOOP

Trả lời

1

Sử dụng này:

Select a.ItemID, b.ConversionFactor VCaseAmt, sum(c.ConversionFactor + 1) SCaseAmt, a.status, a.UserFld2 

From timItem a inner join 
    timItemUnitOfMeas b on a.ItemKey = b.ItemKey and b.TargetUnitMeasKey = 115 left join 
    timItemUnitOfMeas c on a.ItemKey = c.ItemKey and c.TargetUnitMeasKey = 116 left join 
    timItemUnitOfMeas d on a.ItemKey = d.ItemKey and d.TargetUnitMeasKey = 126 

Where d.TargetUnitMeasKey is null and b.ConversionFactor != c.ConversionFactor + 1 and a.Status = 1 and 
not (a.itemid like 'd%' AND a.userfld2 = 'Container') 

Group by a.ItemID, b.TargetUnitMeasKey, b.ConversionFactor, C.TargetUnitMeasKey, c.ConversionFactor, a.status, a.UserFld2 

Order by a.ItemID 
+0

Bingo. Đó là nó chính xác. Bực bội sau những giờ tôi đã cố gắng để làm cho nó hoạt động. Cảm ơn rất nhiều, mặc dù. – Aarmora

Các vấn đề liên quan