J'ai une instruction select qui renverra 2 colonnes.
ID | IDParent
Ensuite, dans mon programme, je dois tester if IDParent is < 1 then use ID ELSE use IDParent
Existe-t-il un moyen d'utiliser une condition du type If Else dans SQL pour renvoyer uniquement une valeur unique?
vous pouvez utiliser CASE
SELECT ...,
CASE WHEN IDParent < 1 THEN ID ELSE IDPArent END AS ColumnName,
...
FROM tableName
SELECT CASE WHEN IDParent < 1
THEN ID
ELSE IDParent
END AS colname
FROM yourtable
Ici, en utilisant CASE Statement
et trouvez le résultat:
select (case when condition1 then result1
when condition2 then result2
else result3
end) as columnname from tablenmae:
Par exemple:
select (CASE WHEN IDParent< 1 then ID
else IDParent END) as columnname
from tablenmae
La requête sera comme suit
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]
serveur 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
J'ai une requête avec ce résultat:
SELECT Top 3
id,
Paytype
FROM dbo.OrderExpresses
WHERE CreateDate > '2018-04-08'
Le résultat est :
22082 1
22083 2
22084 1
Je veux changer le code en chaîne dans la requête, donc j'utilise ce code:
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'
Et le résultat est :)
22082 Credit
22083 Cash
22084 Credit
Voici quelques exemples utilisant CASE WHEN
SELECT
CASE WHEN A > 1 THEN
'Greater than 1'
END
FROM TRIANGLES
.
SELECT
CASE WHEN A > 1 THEN
A
END
FROM TRIANGLES
.
SELECT
CASE WHEN A > 1 and B > 1 THEN
'Greater than 1'
END
FROM TRIANGLES
.
SELECT
CASE WHEN A > 1 THEN
'greater than 1'
ELSE
'less than 1'
END
FROM TRIANGLES
.
SELECT
CASE WHEN A > 1 THEN
'greater than 1'
ELSE CASE WHEN A >= 0 THEN
'greater than or equal 0'
ELSE
'less than 0'
END
END
FROM TRIANGLES;
Hop ça aide
select
CASE WHEN IDParent is < 1 then ID else IDParent END as colname
from yourtable
Vous pouvez également utiliser une construction d'union. Je ne sais pas si CASE est une construction SQL commune ...
SELECT ID FROM tabName WHERE IDParent<1 OR IDParent IS NULL
UNION
SELECT IDParent FROM tabName WHERE IDParent>1