Ich habe eine select-Anweisung, die 2 Spalten zurückgibt.
ID | IDParent
Dann muss ich in meinem Programm if IDParent is < 1 then use ID ELSE use IDParent
testen
Gibt es eine Möglichkeit, eine If Else-ähnliche Bedingung in SQL zu verwenden, um nur einen einzelnen Wert zurückzugeben?
sie können CASE
verwenden.
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
Hier mit CASE Statement
und Ergebnis finden:
select (case when condition1 then result1
when condition2 then result2
else result3
end) as columnname from tablenmae:
Zum Beispiel:
select (CASE WHEN IDParent< 1 then ID
else IDParent END) as columnname
from tablenmae
Die Abfrage lautet wie folgt
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]
sQL Server 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
Sie können einfach die Anweisung if
unter select
query wie unten beschrieben verwenden
if(some_condition,if_satisfied,not_satisfied)
SELECT IF(IDParent < 1,ID,IDParent) FROM yourTable ;
Ich habe eine Abfrage mit diesem Ergebnis:
SELECT Top 3
id,
Paytype
FROM dbo.OrderExpresses
WHERE CreateDate > '2018-04-08'
Das Ergebnis ist :
22082 1
22083 2
22084 1
Ich möchte den Code so ändern, dass er in der Abfrage eine Zeichenfolge enthält, so dass ich diesen Code verwende:
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'
Und das Ergebnis ist :)
22082 Credit
22083 Cash
22084 Credit
Hier ist ein Beispiel mit 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;
Hoffe es hilft
select
CASE WHEN IDParent is < 1 then ID else IDParent END as colname
from yourtable
Sie können auch ein Union-Konstrukt verwenden. Ich bin nicht sicher, ob CASE ein allgemeines SQL-Konstrukt ist ...
SELECT ID FROM tabName WHERE IDParent<1 OR IDParent IS NULL
UNION
SELECT IDParent FROM tabName WHERE IDParent>1