2008-10-16 22 views
0

使用下面的查詢中的列單值:查詢從拉動多個值

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列一個值,我不關心,無論它是什麼,因爲大多數都是相同的(雖然有些都沒有,所以我不能組那一個也是)。

UPDATE:

哎呦,我錯了,prodtree_element_name_l也是NTEXT。這可能有點幫助:P

回答

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時沒有意義。

編輯

基於對意見反饋,我註釋掉組通過而切換到不同的

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 
0

我收到的錯誤:

The data types ntext and varchar are incompatible in the not equal to operator. 

除非我錯過了什麼?

編輯:CHECK TOP。

+0

是pe.prodtree_element_name_l也NTEXT?如果是這樣的話,你可能需要在不等於條件的情況下使用CAST。 – 2008-10-16 18:16:57

+0

不,prodtree_element_name_l是一個NVARCHAR,資源值是唯一的NTEXT – Organiccat 2008-10-16 18:21:35