我有一个查询
select* from MedicationCombination mc
where mc.MedicationId = 2
查询的结果是:
Name Dosage
----- ------
Med1 12
Med2 14
Med3 16
我想将此查询放入存储过程中,该过程将MedicationId作为参数并将结果返回为:
Name Dosage
---- ------
Med1/Med2/Med3 12/14/16
我想在另一个查询中使用此SP:
select Id, Category
from Medication
结果是:
Id Category
-- --------
1 Psychotropic
我想在上面的查询中使用SP,结果如下:
Id Category Name Dosage
-- -------- ---- ------
1 Psychotropic Med1/Med2/Med3 12/14/16
可能的解决方案是什么?
答案 0 :(得分:0)
DBMS的工作不是按照您希望的方式格式化数据,而是应用程序的语言。因此,使用您发布的第一个查询查询数据库,并使用您正在使用的任何语言按照您希望的方式对其进行格式化。
如果要与另一个表进行JOIN,则必须指定条件。如果您只想制作笛卡儿产品,可以使用CROSS JOIN:
SELECT Id, Category, Name, Dosage
FROM MedicationCombination
CROSS JOIN Medication
WHERE MedicationId = 2
答案 1 :(得分:0)
第一个回答:
SELECT DISTINCT @YourMedicationID AS CategoryId
( SELECT ( Name + '/' )
FROM MedicationCombination p
WHERE p.MedicationId = p2.MedicationId
ORDER BY Name
FOR
XML PATH('')
) AS NAME ,
( SELECT ( CAST(Dosage AS VARCHAR(10)) + '/' )
FROM MedicationCombination p
WHERE p.MedicationId = p2.MedicationId
ORDER BY Name
FOR
XML PATH('')
) AS Dosage
FROM MedicationCombination p2
WHERE p2.MedicationId = @YourMedicationID
GROUP BY NAME ,
MedicationId
产生这个:
CategoryId NAME Dosage
2 Med1/Med2/Med3/ 12/14/16/
现在加入你的药物治疗表应该是微不足道的。
select * from Medication m
join (result from previous query) t on t.CategoryId=m.CategoryID