SQL按一行获取查询结果的值
我有一个疑问:SQL按一行获取查询结果的值,sql,tsql,Sql,Tsql,我有一个疑问: SELECT R.ID ,O.DisplayName ,[Value] FROM AA_V_PHR_CCD_ResultsXResults R INNER JOIN AA_V_PHR_CCD_ResultsObservationXLANGUAGES O ON R.IDResultObservation = O.ID WHERE IDResults = 149 AND O.IDLanguage = 2 ID Disp
SELECT
R.ID
,O.DisplayName
,[Value]
FROM AA_V_PHR_CCD_ResultsXResults R
INNER JOIN AA_V_PHR_CCD_ResultsObservationXLANGUAGES O
ON R.IDResultObservation = O.ID
WHERE IDResults = 149 AND O.IDLanguage = 2
ID DisplayName Value
1604 HBsAg 0.140
1605 HBsAb 0.000
1606 HCV 0.020
这是这个查询的结果:
SELECT
R.ID
,O.DisplayName
,[Value]
FROM AA_V_PHR_CCD_ResultsXResults R
INNER JOIN AA_V_PHR_CCD_ResultsObservationXLANGUAGES O
ON R.IDResultObservation = O.ID
WHERE IDResults = 149 AND O.IDLanguage = 2
ID DisplayName Value
1604 HBsAg 0.140
1605 HBsAb 0.000
1606 HCV 0.020
如果可能的话,我希望得到这个结果:
1604 HBsAg: 0.140 1605 HBsAb: 0.00 etc
可以这样做您可以尝试以下方法:
SELECT stuff(
(
SELECT cast(',' as varchar(max)) + R.ID || ' ' || O.DisplayName || ' ' || [Value]
FROM AA_V_PHR_CCD_ResultsXResults R
INNER JOIN AA_V_PHR_CCD_ResultsObservationXLANGUAGES O
ON R.IDResultObservation = O.ID
WHERE IDResults = 149
AND O.IDLanguage = 2 for xml path('')
),
1, 1, '') AS my_results
FROM AA_V_PHR_CCD_ResultsXResults R
INNER JOIN AA_V_PHR_CCD_ResultsObservationXLANGUAGES O
ON R.IDResultObservation = O.ID
WHERE IDResults = 149
AND O.IDLanguage = 2
您应该按如下方式使用STUFF函数:
SELECT STUFF(
(
SELECT ' '+CONVERT(VARCHAR(MAX), ID)+' '+DisplayName+' : '+CONVERT(NVARCHAR(MAX), Value)
FROM <table_name> FOR XML PATH('')
), 1, 1, '') [data];
如果有帮助的话,这可以在不使用XML的情况下解决问题
DECLARE @Temp NVARCHAR(MAX) = ''
SELECT @TEMP = CONCAT(@Temp, CAST(ID AS VARCHAR(4)), ' ', DisplayName, ' :', CAST(Value AS VARCHAR(5), ' ')
FROM Table
SELECT @Temp
如果有许多行/列,您将如何可视化这些结果?我想在TSQL中将这些结果可视化为一行和一列。GROUP_CONCAT函数不可识别。我认为这不会仅在一行中显示结果。是的,我假设SQLServer更聪明