2015-10-15 135 views
-1

嗨,大家好,我想知道是否有可能在SELECT查询中创建一个新的列?在该查询SQL查询创建列

我目前有一个查询,可以为零件号,它们的载体号,载体状态以及它们的最终用途提供数据。我想多一个列添加到查询,命名为“合格”和值将

  • “C”,如果最终使用的那部分=认证,并在数据库中的这个其他表存在。 因此,如果零件的最终用途是证书,并且它存在于另一个表格(名为特殊程序)中,那么它将在此新字段中显示为“C”
  • 否则它将为空白。那可能吗?

SELECT语句:

Select distinct 
    pn.PNumber, 
    ht.CarrierID AS 'Carrier Number', 
    chs.CarrierDescriptionText AS 'Carrier State', 
    ct.EndUsedName AS 'End Use' 

结果例子:

enter image description here

+2

看一看['CASE ... WHEN'](https://msdn.microsoft.com/en-us/library/ms181765(V = sql.120) .aspx)和['EXISTS'](https://msdn.microsoft.com/en-us/library/ms188336(v = sql.120).aspx)。 –

+1

单引号用于字符串文字,对于标识符使用双引号(例如“Carrier Number”。) – jarlh

+0

@ X.L.Ant但会创建额外的列吗? –

回答

0

总空气代码。 LEFT JOIN将your_table与other_table相关联,并在CASE块中将ot。测试该相关行是否存在于另一个表中。更改your_table,other_table和??以适应你的情况。

Select distinct 
 
    pn.PNumber, 
 
    ht.CarrierID AS 'Carrier Number', 
 
    chs.CarrierDescriptionText AS 'Carrier State', 
 
    ct.EndUsedName AS 'End Use', 
 
    CASE WHEN [End Use] = 'Certification' AND ot.?? IS NOT NULL THEN 'C' ELSE '' END as eligibility 
 
FROM your_table yt 
 
    LEFT JOIN other_table ot ON yt.?? = ot.??

+0

omg这个作品完全谢谢你!最后一个问题,如果你不介意有反正我可以参考整个表像ot。*,因为它不会让我这样做,当我改变它 –

+0

@eto_donna如果这个答案适合你,请标记为接受。 – Siyual

+0

'我可以引用整个表,就像ot。*'是的,但如果yt和ot具有完全相同名称的列,那么这将不起作用。如果是这种情况,您必须输入所有列。 –