我有一个查询返回我们系统中设置的汇率值.并非每个订单都有汇率(currate.currentrate),因此它返回空值.
我可以让它返回1而不是null吗?
类似if语句的东西可能是:
if isnull(currate.currentrate) then 1 else currate.currentrate
Run Code Online (Sandbox Code Playgroud)
这是我在下面的查询.我非常感谢你的帮助!
SELECT orderhed.ordernum, orderhed.orderdate, currrate.currencycode, currrate.currentrate
FROM orderhed LEFT OUTER JOIN
currrate ON orderhed.company = currrate.company AND orderhed.orderdate = currrate.effectivedate
Run Code Online (Sandbox Code Playgroud)
Jus*_*son 107
您可以使用CASE
声明.
SELECT
CASE WHEN currate.currentrate IS NULL THEN 1 ELSE currate.currentrate END
FROM ...
Run Code Online (Sandbox Code Playgroud)
Tar*_*ryn 47
你可以使用COALESCE
:
SELECT orderhed.ordernum,
orderhed.orderdate,
currrate.currencycode,
coalesce(currrate.currentrate, 1) as currentrate
FROM orderhed
LEFT OUTER JOIN currrate
ON orderhed.company = currrate.company
AND orderhed.orderdate = currrate.effectivedate
Run Code Online (Sandbox Code Playgroud)
甚至IsNull()
:
SELECT orderhed.ordernum,
orderhed.orderdate,
currrate.currencycode,
IsNull(currrate.currentrate, 1) as currentrate
FROM orderhed
LEFT OUTER JOIN currrate
ON orderhed.company = currrate.company
AND orderhed.orderdate = currrate.effectivedate
Run Code Online (Sandbox Code Playgroud)
这是一篇帮助决定COALESCE
和之间的文章IsNull
:
http://www.mssqltips.com/sqlservertip/2689/deciding-between-coalesce-and-isnull-in-sql-server/
Bar*_*rka 12
SELECT
ISNULL(currate.currentrate, 1)
FROM ...
Run Code Online (Sandbox Code Playgroud)
比获胜的答案更简洁,并做同样的事情
https://msdn.microsoft.com/en-us/library/ms184325.aspx
小智 10
a) 如果你想要 0 当 value 为 null 时
SELECT isnull(PartNum,0) AS PartNumber, PartID
FROM Part
Run Code Online (Sandbox Code Playgroud)
b) 如果您希望当值为 null 时为 0,否则为 1
SELECT
(CASE
WHEN PartNum IS NULL THEN 0
ELSE 1
END) AS PartNumber,
PartID
FROM Part
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
219415 次 |
最近记录: |