使用以下查询:
SELECT pe.prodtree_element_name_l, MAX(rs.resource_value) AS resource_value
FROM prodtree_element pe
LEFT JOIN resource_shortstrings rs
ON pe.prodtree_element_name_l_rk = rs.resource_key
WHERE rs.language_id = '5'
AND pe.prodtree_element_name_l <> ''
GROUP BY prodtree_element_name_l
我正在试图弄清楚如何抓住任何“resource_value”。问题在于,虽然这适用于许多其他查询,但我有一个特定的表使用ntext数据类型而不是varchars(它不能使用MAX函数)。所以基本上,MAX在这里不起作用。我可以在MS SQL Server 2005上使用替代品吗?
我需要将prodtree_element_name_l列分组,但我只需要来自resource_value列的一个值,我不在乎它是什么,因为它们中的大多数都是相同的(尽管有些不相同,因此我无法对其进行分组)一个也是。)
更新:
哎呀,我错了,prodtree_element_name_l也是一个NTEXT。这可能有点帮助:p
答案 0 :(得分:1)
这将获得第一个随机条目
SELECT DISTINCT
pe.prodtree_element_name_l,
(SELECT TOP 1 rs2.resource_value
FROM resource_shortstrings rs2
WHERE rs2.language_id = '5'
AND rs2.resource_key = pe.prodtree_element_name_l_rk) AS "resource_value"
FROM prodtree_element pe
LEFT JOIN resource_shortstrings rs
ON pe.prodtree_element_name_l_rk = rs.resource_key
WHERE rs.language_id = '5'
AND pe.prodtree_element_name_l IS NOT NULL
--GROUP BY prodtree_element_name_l
注意强>
在您的查询中,您使用LEFT JOIN但在左连接表上也使用了过滤器,因此限制了记录集。我认为这会改变你的结果......但是没有必要进行LEFT JOIN。
修改强>
根据评论中的反馈,我将该组注释掉并切换到不同的
答案 1 :(得分:0)
SELECT pe.prodtree_element_name_l, MAX(CAST(rs.resource_value AS NVARCHAR(MAX))) AS resource_value
FROM prodtree_element pe
LEFT JOIN resource_shortstrings rs
ON pe.prodtree_element_name_l_rk = rs.resource_key
WHERE rs.language_id = '5'
AND pe.prodtree_element_name_l <> ''
GROUP BY prodtree_element_name_l
答案 2 :(得分:0)
我收到了错误:
The data types ntext and varchar are incompatible in the not equal to operator.
除非我错过了什么?
编辑:检查顶部。