簡體   English   中英

選擇語句中的選擇語句

[英]Select statement within a select statement

我有以下選擇語句,返回的正是我想要的:

DECLARE @result varchar(max) = ''

SELECT @result += (result.Fullname + '<br/>') 
FROM (SELECT DISTINCT Fullname
FROM Providers 
WHERE Status='A') as result

select substring(@result, 0, len(@result) - 4)

唯一的問題是,我希望此查詢的輸出顯示為較大選擇語句中的列條目。

例如。

SELECT      
    Column AS [AColumnName],

    SELECT @result += (result.Fullname + '<br/>') 
    FROM (SELECT DISTINCT Fullname
    FROM Providers 
    WHERE Status='A') as result

    select substring(@result, 0, len(@result) - 4) as [LenderList]
FROM
 Table

但我目前遇到錯誤:關鍵字“ SELECT”附近的語法不正確。 指向第4行的錯誤

有任何想法嗎?

您需要在SQL Server中聚合字符串串聯。 子查詢上已經有很多答案,但是為您省去了麻煩:

SELECT Column AS [AColumnName],
       STUFF((SELECT DISTINCT '<br/>' + Fullname
              FROM Providers 
              WHERE Status = 'A'
              FOR XML PATH (''), TYPE
             ).value('.', 'varchar(max)'
                    ), 1, 5, ''
            ) as result
FROM Table;

類型的使用很重要,因為您的字符串具有特殊的XML字符。

您可以簡單地在2條語句中運行它嗎?

SELECT @result += (result.Fullname + '<br/>') 
FROM (SELECT DISTINCT Fullname
     FROM Providers 
     WHERE Status='A') as result

SELECT      
    Column AS [AColumnName],
    substring(@result, 0, len(@result) - 4)
FROM Table

哪個數據庫? 如果可以用於xml,則類似...

select substring(a.innards, 0, len(a.innards) - 4) as [LenderList]
from 
(
    SELECT innards = STUFF(
        (SELECT DISTINCT Fullname + '</br>'
        FROM Providers
        WHERE [Status] = 'A'
        FOR XML PATH(''), TYPE).value('.[1]', 'nvarchar(max)')
        , 1
        , 0
        , '')
) a

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM