我正在使用SQL Server 2012.我需要將來自以下查詢的結果連接成一個長字符串。所以,而不是獲得行結果,我只需要一個字符串。我想用結果填充@TEMPS_MEASURE。從查詢結果而不是行中獲取字符串
目前,結果是這樣的:
取而代之的是,我願與列之間<br/>
只返回一個字符串,像這樣:
H 1 topla kuhinja (2 - 6 °C):<br/>Temperatura: 5.00°C<br/>H 2 hladna kuhinja (2 - 6 °C):<br/>Temperatura: 4.00°C<br/>
我應該如何改變查詢?
查詢:
DECLARE @TEMPS_MEASURE NVARCHAR(500) = NULL
SELECT
CASE WHEN HATE.HATE_TE1 IS NULL AND HATE.HATE_AC1 IS NULL AND HATE.HATE_TE2 IS NULL THEN NULL ELSE COLI.COLI_NME + ':<br/>' END AS EQ_NAME
, CASE HATE.HATE_TE1 WHEN NULL THEN NULL ELSE 'Temperatura: ' + CONVERT(VARCHAR(20), CAST(ROUND(HATE.HATE_TE1,2,0) AS NUMERIC(10,2))) + '°C<br/>' END AS TEMP
, CASE HATE.HATE_AC1
WHEN NULL THEN NULL
WHEN '1' THEN 'Ukrep: Zavržemo jed/živilo<br/>'
WHEN '2' THEN 'Ukrep: Izmerimo središčno temperaturo jedi/živila (TS*)<br/>'
WHEN '3' THEN 'Ukrep: Dodatno ogrejemo<br/>'
END ACTION_UPON
, CASE HATE.HATE_TE2 WHEN NULL THEN NULL ELSE 'Temperatura središča: ' + CONVERT(VARCHAR(20), CAST(ROUND(HATE.HATE_TE2,2,0) AS NUMERIC(10,2))) + '°C<br/>' END AS TEMP_CENTER
FROM CAHATE HATE
INNER JOIN CACOLI COLI ON COLI.COLI_KEY = HATE.COLI_KEY
WHERE HACC_KEY = 160001417
SOLUTION:
我創建函數FOR XML PATH:
ALTER FUNCTION dbo.f_CAHATE_Get_Temperatures (@iHACC_KEY INTEGER)
RETURNS NVARCHAR(500)
AS BEGIN
DECLARE @TEMPS_MEASURE NVARCHAR(500) = NULL
SELECT @TEMPS_MEASURE = (SELECT
CONCAT(
(CASE WHEN HATE.HATE_TE1 IS NULL AND HATE.HATE_AC1 IS NULL AND HATE.HATE_TE2 IS NULL THEN '' ELSE COLI.COLI_NME + ':' END)
, (CASE HATE.HATE_TE1 WHEN NULL THEN '' ELSE 'Temperatura: ' + CONVERT(VARCHAR(20), CAST(ROUND(HATE.HATE_TE1,2,0) AS NUMERIC(10,2))) + '°C;' END)
, (CASE HATE.HATE_AC1
WHEN NULL THEN ''
WHEN '1' THEN 'Ukrep: Zavržemo jed/živilo;'
WHEN '2' THEN 'Ukrep: Izmerimo središčno temperaturo jedi/živila (TS*);'
WHEN '3' THEN 'Ukrep: Dodatno ogrejemo;'
END)
, (CASE HATE.HATE_TE2 WHEN NULL THEN '' ELSE 'Temperatura središča: ' + CONVERT(VARCHAR(20), CAST(ROUND(HATE.HATE_TE2,2,0) AS NUMERIC(10,2))) + '°C;' END)
)
FROM
CAHATE HATE
INNER JOIN CACOLI COLI ON COLI.COLI_KEY = HATE.COLI_KEY
WHERE
HACC_KEY = @iHACC_KEY
for xml path(''))
RETURN @TEMPS_MEASURE
END
爲什麼downvoting?問題有問題嗎?有什麼遺漏? – FrenkyB
您的選擇查詢將返回包含4列的結果,您希望如何格式化返回的值?注:我不是downvoter –
我把
之間。 – FrenkyB