2013-04-16 25 views
6

Nerede, bir yan tümce tümcesinde "if" ifadesini yapmaya çalışıyorum. Sql'nin bunu desteklemediğinin farkındayım ama eminim ki bu çalışmayı sql sözdizimi ile yapmanın bir yolu olmalı. Kalın harflerle yazılmış alanda gösterildiği gibi, d ile başlayan tüm öğeleri bulmaya çalışıyorum ve eğer userfld2 de = container ise bunları filtreleyeceğim.Bir sql içinde bir "if" türü deyimi, burada

Bunu yapmaktan daha mantıklı bir yol var mı, yoksa işaretin dışında mıyım?

Şimdiden teşekkürler.

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

filtre a.itemid 'd%' ** ve ** a.userfld2 = konteyner gibi değildir? – NINCOMPOOP

cevap

1

için bu:

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. Tam olarak öyle. Çalışmak için uğraştığım saatlerden sonra sinir bozucu. Yine de teşekkürler. – Aarmora

İlgili konular