大小写、变量和一堆垃圾
Case, Variable, and a Bunch of Junk
我的客户希望能够使用参数 (SSRS) 按大小对这些材料进行排序。
我曾尝试使用 SSRS 进行过滤但没有成功,在我的 SQL 代码中也有几次失败的尝试。问题是有些材料很简单,例如“2" X 3/4" PVC SCH80 BUSHING SPIGOT X SOCKET',但其他材料更像是 'HOSE, DISCHARGE',其中我们将有一个 "Other" 将显示的类别。
我的代码的 case 部分是我出错的地方。是这样吗?我应该使用案例还是其他什么?我知道连接,第一个 WHERE 是正确的。重要的是要注意尺寸总是在描述的开头,它永远不会在名字的中间或其他任何地方,但字符数确实会有所不同,有时它会像 3/4" 或 2 " 等。最后的勾号 (") 也将始终位于末尾。
SELECT MATERIALLEAF.DESCRIPTION
FROM STORERMSTOCK
JOIN MATERIALLEAF ON MATERIALLEAF.MATERIALSID = STORERMSTOCK.MATERIALSID
JOIN CWCUSTFIELD ON CWCUSTFIELD.TABLEOBJECTID = STORERMSTOCK.MATERIALSID
WHERE (CWCUSTFIELD.CUSTFIELDID = '5')
AND CASE@sizes
WHEN'3/4"' THEN
(SELECT MATERIALLEAF.DESCRIPTION
FROM STORERMSTOCK
WHERE MATERIALLEAF.DESCRIPTION LIKE'3/4"%')
ELSE
@sizes
END
我希望看到一个列表,我可以按材料的尺寸过滤,再加上另一个选择,其中包含描述开头没有尺寸的所有内容。
你做错了。您不能对 return 整个子查询使用 CASE 表达式。
看起来你想要的更像这样:
WHERE (
@sizes='3/4"' AND MATERIALLEAF.DESCRIPTION LIKE'3/4"%'
) OR
... whatever you want to do if @sizes != '3/4"'.
嗯。 . .也许这就是你想要的?
WHERE CWCUSTFIELD.CUSTFIELDID = '5' AND
(@sizes IS NULL OR
MATERIALLEAF.DESCRIPTION LIKE @sizes + '%'
)
我的客户希望能够使用参数 (SSRS) 按大小对这些材料进行排序。
我曾尝试使用 SSRS 进行过滤但没有成功,在我的 SQL 代码中也有几次失败的尝试。问题是有些材料很简单,例如“2" X 3/4" PVC SCH80 BUSHING SPIGOT X SOCKET',但其他材料更像是 'HOSE, DISCHARGE',其中我们将有一个 "Other" 将显示的类别。
我的代码的 case 部分是我出错的地方。是这样吗?我应该使用案例还是其他什么?我知道连接,第一个 WHERE 是正确的。重要的是要注意尺寸总是在描述的开头,它永远不会在名字的中间或其他任何地方,但字符数确实会有所不同,有时它会像 3/4" 或 2 " 等。最后的勾号 (") 也将始终位于末尾。
SELECT MATERIALLEAF.DESCRIPTION
FROM STORERMSTOCK
JOIN MATERIALLEAF ON MATERIALLEAF.MATERIALSID = STORERMSTOCK.MATERIALSID
JOIN CWCUSTFIELD ON CWCUSTFIELD.TABLEOBJECTID = STORERMSTOCK.MATERIALSID
WHERE (CWCUSTFIELD.CUSTFIELDID = '5')
AND CASE@sizes
WHEN'3/4"' THEN
(SELECT MATERIALLEAF.DESCRIPTION
FROM STORERMSTOCK
WHERE MATERIALLEAF.DESCRIPTION LIKE'3/4"%')
ELSE
@sizes
END
我希望看到一个列表,我可以按材料的尺寸过滤,再加上另一个选择,其中包含描述开头没有尺寸的所有内容。
你做错了。您不能对 return 整个子查询使用 CASE 表达式。
看起来你想要的更像这样:
WHERE (
@sizes='3/4"' AND MATERIALLEAF.DESCRIPTION LIKE'3/4"%'
) OR
... whatever you want to do if @sizes != '3/4"'.
嗯。 . .也许这就是你想要的?
WHERE CWCUSTFIELD.CUSTFIELDID = '5' AND
(@sizes IS NULL OR
MATERIALLEAF.DESCRIPTION LIKE @sizes + '%'
)