我正在使用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