我正在编写一个T-SQL报告,该报告显示不同客户处于不同状态的帐户数量。该报告的结果如下:
Customer1 NoService 7
Customer1 IncompleteOrder 13
Customer1 NULL 9
Customer2 NoService 12
Customer2 Available 19
Customer2 NULL 3
...
‘NULL’状态是有效数据,但我不想显示NULL,而是要显示“ Pending”。到目前为止,这是我的SQL:
USE cdwCSP;
SELECT
sr.sales_region_name AS SalesRegion
, micv.value
, COUNT(sr.sales_region_name)
FROM prospect p
LEFT JOIN sales_region sr
ON p.salesRegionId = sr.sales_region_number
LEFT JOIN prospectOrder po
ON po.prospectId = p.prospectId
LEFT JOIN wo
ON wo.prospectId = p.prospectId
LEFT JOIN woTray wot
ON wot.woId = wo.woId
LEFT JOIN miscInformationCustomerCategory micc
ON micc.prospectId = p.prospectId
LEFT JOIN miscInformationCustomerValues micv
ON micv.miscInformationCustomerCategoryId = micc.miscInformationCustomerCategoryId
LEFT JOIN miscInformationCategory mic
ON micc.miscInformationCategoryId = mic.miscInformationCategoryId
WHERE wot.dateOut IS NULL
AND mic.categoryName LIKE '%Serviceability%'
GROUP BY sr.sales_region_name, micv.value
ORDER BY sr.sales_region_name, micv.value;
任何帮助将不胜感激,我仍在学习T-SQL,因此这可能是一个容易回答的问题。
您可以使用COALESCE
或ISNULL
。前者是标准格式,并html" target="_blank">返回第一个NOT NULL
参数(NULL
如果所有参数均为,则返回NULL
)
SELECT COALESCE(micv.value,'Pending') as value
ISNULL
限制为仅2个参数,但是如果要测试的第一个值的评估成本很高(例如,子查询),则在SQL Server中效率更高。
ISNULL
需要注意的一个潜在“陷阱”是它返回第一个参数的数据类型,因此,如果要替换的字符串长于列数据类型,则将需要强制转换。
例如
CREATE TABLE T(C VARCHAR(3) NULL);
INSERT T VALUES (NULL);
SELECT ISNULL(C,'Unknown')
FROM T
会回来 Unk
但是ISNULL(CAST(C as VARCHAR(7)),'Unknown')
或COALESCE
两者都可以按需工作。
问题内容: 在我的存储过程中,我通过了一个过滤器(使用“ WHERE Column IN”子句)作为参数。参数的值以CSV形式给出。将CSV转换为记录集的最佳方法是什么。 例子:- 我需要将名称作为参数传递给CSV字符串,例如 。 问题答案: 看看Erland Sommarskog的文章。他对做这种事情的不同方式有深入的了解: SQL Server中的数组和列表
问题内容: 我们有一个数据库,该数据库的一列中有一堆记录,其中包含一些不良数据,其中的嵌入式编辑器转义了一些本不应该转义的内容,并且破坏了生成的链接。 我想运行一个查询来替换所有记录中的坏字符,但无法弄清楚该怎么做。我在MySQL中找到了该函数,但是如何在查询中使用它呢? 例如,如果我想用该列中所有记录中的实际小于尖括号()替换字符串,那么正确的语法是什么?是否可以在单个查询中完成(即一次选择并替
本文向大家介绍如何使用MySQL replace()替换多个记录中的字符串?,包括了如何使用MySQL replace()替换多个记录中的字符串?的使用技巧和注意事项,需要的朋友参考一下 该函数可用于将一个字符串替换为另一个字符串。要理解,我们需要创建一个包含一些记录的表。以下是创建表的查询。 在INSERT命令的帮助下插入一些记录。插入记录的查询如下- 让我们检查表“ replaceDemo”中
本文向大家介绍MySQL REPLACE()函数如何替换多个记录中的字符串?,包括了MySQL REPLACE()函数如何替换多个记录中的字符串?的使用技巧和注意事项,需要的朋友参考一下 如果要替换多个记录中的字符串,则函数必须将列名称作为第一个参数,即在字符串的位置。这意味着它将用该特定列中的另一个子字符串替换所有子字符串。我们还可以将WHERE子句与UPDATE语句一起使用,以应用条件。通过以
问题内容: 我想知道您将如何解决相反的问题:将逗号分隔的字符串拆分为数据行: 可以说我有表: 并想将数据插入表中 问题答案: 这个问题的解决方案记录在这里,包括这个小gem:
谢谢,纳瓦兹