我已经阅读了许多类似问题的帖子,但还没有找到答案。我对 SQL 很陌生。使用 SQL Server Express 2008。
我的目标是获得在具有相似名称的几个列中不同的所有值的单列结果。相关列具有相同的基本名称(后缀),后跟一个整数。我有很多列组,所以我不想对查询进行硬编码。
Fruit1 Coating1 Temperature1 Fruit2 Coating2 Temperature2 Fruit3 Coating3 Temperature3
-----------------------------------------------------------------------------------
apple caramel 72.5 pear chocolate 74.1 apple chocolate 98.6
pear caramel 73.3 peach chocolate 42.7 apple chocolate 33.0
所以我希望服务器返回,例如,任何/所有水果列中使用的所有水果 apple peach pear
我已经知道如何使用通配符获取列名列表:
SELECT Column_name AS columnNames
FROM INFORMATION_SCHEMA.COLUMNS
WHERE Column_name LIKE 'Fruit%'
如果我已经知道列名,我也知道如何从列中找到不同的值:
SELECT DISTINCT Fruit FROM(
SELECT Fruit1 as Fruit from FruitBasket
UNION
SELECT Fruit2 as Fruit from FruitBasket
UNION
SELECT Fruit3 as Fruit from FruitBasket)
AS finalOutput
我需要知道的是如何在第二个的 UNION 参数中使用第一个查询的列名结果。我应该使用 FOR 循环还是什么?
谢谢!