Usar se for o caso na instrução de selecção SQL

tenho uma instrução seleccionada que irá devolver 2 colunas.

ID | IDParent
Então no meu programa tenho de testar if IDParent is < 1 then use ID ELSE use IDParent

Existe uma maneira de usar uma condição If diferente em SQL para devolver apenas um único valor?

Author: Ian, 2012-11-23

8 answers

Pode usar CASE

SELECT   ...,
         CASE WHEN IDParent < 1 THEN ID ELSE IDPArent END AS ColumnName,
         ...
FROM     tableName
 70
Author: John Woo, 2012-11-23 09:55:27
SELECT CASE WHEN IDParent < 1 
            THEN ID 
            ELSE IDParent 
       END AS colname 
FROM yourtable
 19
Author: AnandPhadke, 2013-04-24 07:37:58
Aqui, usando CASE Statement e encontrar o resultado:
select (case when condition1 then result1
             when condition2 then result2
             else result3
             end) as columnname from tablenmae:

Por exemplo:

select (CASE WHEN IDParent< 1 then ID 
             else IDParent END) as columnname
from tablenmae
 18
Author: jainvikram444, 2014-12-08 08:52:44

A consulta será como se segue

SELECT (CASE WHEN tuLieuSo is null or tuLieuSo=''
            THEN 'Chưa có đĩa' 
            ELSE 'Có đĩa' End) AS tuLieuSo,moTa
FROM [gPlan_datav3_SQHKTHN].[dbo].[gPlan_HoSo]
 4
Author: user4112005, 2014-10-06 04:25:14

Servidor Sql 2012

  with
  student as 
(select sid,year from (
values (101,5),(102,5),(103,4),(104,3),(105,2),(106,1),(107,4)
) as student(sid,year)
)
select iif(year=5,sid,year) as myCol,* from student


 myCol  sid year
101 101 5
102 102 5
4   103 4
3   104 3
2   105 2
1   106 1
4   107 4
 1
Author: user3380585, 2014-10-11 09:57:38

Também podes usar uma construção sindical. Não sei se CASE é uma construção SQL comum ...

SELECT ID FROM tabName WHERE IDParent<1 OR IDParent IS NULL
UNION 
SELECT IDParent FROM tabName WHERE IDParent>1
 0
Author: OkieOth, 2012-11-23 10:17:44
select 
CASE WHEN IDParent is < 1 then ID else IDParent END as colname 
from yourtable
 0
Author: Nirav Ranpara, 2012-11-23 11:17:58

Tenho uma pergunta com este resultado:

SELECT Top 3
 id,
 Paytype
 FROM dbo.OrderExpresses
 WHERE CreateDate > '2018-04-08'

O resultado é:

22082   1
22083   2
22084   1

Quero Mudar O Código Para String In Query, Por Isso Uso Este Código:

SELECT TOP 3
 id,
 CASE WHEN Paytype = 1 THEN N'Credit' ELSE N'Cash' END AS PayTypeString
 FROM dbo.OrderExpresses
 WHERE CreateDate > '2018-04-08'

E O Resultado É:)

22082   Credit
22083   Cash
22084   Credit
 0
Author: Davoud Gharajeh, 2018-04-08 05:37:44