2011-11-17 98 views
0

我有产生种类和数量的select语句:SQL默认值

我通常有以下

Type  Qty 
TypeOne 1 
TypeTwo 23 
TypeThree 1 

说,在某些情况下,我没有得到两个我一个返回值会得到具有:

Select Type, Qty from Tbl1 

我的数据会看起来像

Type  Qty 
TypeOne 1 
TypeThree 1 

如果我没有得到一定的价值,我喜欢默认在(在这种情况下,由于TypeTwo不存在的,我喜欢它默认为0,并添加条目)

类型数量

TypeOne 1 
TypeTwo 0 
TypeThree 1 
+2

你有一个类型的表? –

+1

我们需要看到整个'SELECT'语句。 –

+0

你是说你想看到0数量的行吗? –

回答

4

一个简单的方法是有一个包含列类型和默认值的类型表,然后您可以执行以下操作。

Select 
     type.Type, 
     COALESCE(tbl1.Qty,type.default) qty 
    from 
     type 
     LEFT JOIN Tbl1 
     ON type.type = tbl1.type 

如果你没有一个类型的表,这取决于你的数据库既可以创建临时表或使用WITH Clause创建类型和默认值之间的映射,以及各类

列表

例如

With Type 
(SELECT `TypeOne` type, 0 default 
    UNION ALL SELECT `TypeTwo` type, 4 default 
    UNION ALL SELECT `TypeThree` type, 3 default) 
Select 
    type.Type, 
    COALESCE(tbl1.Qty,type.default) qty 
from 
    type 
    LEFT JOIN Tbl1 
    ON type.type = tbl1.type