gpt4 book ai didi

mysql - 将 'IF and NULL' 从 MySQL 更改为 SQL Server

转载 作者:行者123 更新时间:2023-11-29 06:13:12 26 4
gpt4 key购买 nike

我在将查询从 MySQL 更改为 SQL Server 时遇到问题。我试图在 SQL 中将其更改为 ISNULLIIF 但仍然不起作用。欢迎任何提示或帮助,谢谢!

问题 1:

MySQL

SELECT i.item_name
, r.item_version
, SUM(IF(r.group_status=1,r.quantity,0)) AS `Approved`
, SUM(IF(r.group_status=2,r.quantity,0)) AS `NotApproved`
, SUM(r.quantity) AS `Total`
FROM requesters r
JOIN items i
ON i.item_id = r.item_id
WHERE r.group_status IN (1,2)
AND r.requested_date >= '$a'
AND r.requested_date <= '$b'
GROUP
BY i.item_name
, r.item_version

SQL Server

SELECT i.item_name
, r.item_version
, SUM(ISNULL(r.group_status=1,r.quantity,0)) AS `Approved`
, SUM(ISNULL(r.group_status=2,r.quantity,0)) AS `NotApproved`
, SUM(r.quantity) AS `Total`
FROM requesters r
JOIN items i
ON i.item_id = r.item_id
WHERE r.group_status IN (1,2)
AND r.requested_date >= '$a'
AND r.requested_date <= '$b'
GROUP
BY i.item_name
, r.item_version

它一直说 Incorrect syntax near ',' 并且仍然不起作用。

问题 2:

MySQL

SELECT IFNULL(SUM(IF(endusers.price,endusers.price,0)),0) AS `totalprice` 
FROM endusers
WHERE requester_code = '$req_code'

SQL Server

SELECT NULLIF(SUM(COALESCE(endusers.price,endusers.price,0)),0) AS 'totalprice' 
FROM endusers
WHERE requester_code = '$req_code'

我在问题2中使用COALESCE时的问题,当表中没有值时,它不会显示'0'

最佳答案

SQL Server 中的isnull 函数不等同于MySQL 中的if 函数,请改用case 运算符:

SUM(case when r.group_status=1 then r.quantity else 0 end))

在第二种情况下,您似乎也在错误地使用 coalesce,因为它只是从参数中获取第一个非空值,并且它不等同于 MySQL if 函数,也使用 case 运算符。

同样在第二种情况下,如果没有结果,您将不会得到 0 值 - 至少因为您用 nullif 包装了它并且它输出 null 当结果总和为 0 时。所以你的问题的这一部分确实需要澄清,可能需要源数据样本和所需的输出。

关于mysql - 将 'IF and NULL' 从 MySQL 更改为 SQL Server,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37319447/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com