2010-02-18 9 views
5

, bu bascially olan bir sütun değerine bağlı olarak farklı miktarlarda Bilgisayar Yapmak ne istiyorsunuz: (., Vb sütun adları gösterim için uyarlanmış)psuedo kodunda

select 
    if a1 >= 0 and a1 <= 2 
     a2 + a7 + a8 as sum 
    else 
     a2 + a8 as sum 
from table_name 
; 

Türkçe: Birkaç bin kaydın her biri için farklı sütunları toplamalıyım. Mümkünse SQL'de toplamı yapmak istiyorum. Koşullar arasında tek bir sütun eksik/eklenmiş, bir ikame veya her ikisi arasında sadece bir veya iki fark vardır. Bu, uygulamanın iş mantığına dayanıyor, benim seçimim için bir tasarım kararı değil.

Bazı seçenekleri kısıtlayan sqlite3 (3.6.10) kullanıyorum. İşte

cevap

8

Eğer SQL boole ifadeleri göre 0 veya 1 için değerlendirmeniz bir hile kullanabilirsiniz:

SELECT 
    CASE WHEN a1 BETWEEN 0 AND 2 
     THEN a2 + a7 + a8 
     ELSE a2 + a8 
    END AS SUM 
FROM table_name 
:

SELECT a2 + a8 + a7 * (a1 BETWEEN 0 AND 2) AS SUM 
FROM table_name 

daha genel (ve daha geleneksel) yolu VAKA ifadesini kullanmaktır

Ayrıca yaygın terimler tekrarlamadan bir VAKA ifadesini içerecek şekilde böyle bir şey yapabilirsiniz:

SELECT 
    a2 + a8 + (CASE WHEN a1 BETWEEN 0 AND 2 THEN a7 ELSE 0 END) AS SUM 
FROM table_name 
+0

Bu tam olarak ihtiyacım olan şey, teşekkürler. ÇALIŞIYOR bir cazibe gibi. –