根据您的表结构,这个查询应该工作:
SELECT itemname, 'Brand1' AS brand
FROM maintable
WHERE brand1 = 'Y'
UNION ALL
SELECT itemname, 'Brand2'
FROM maintable
WHERE brand2 = 'Y'
UNION ALL
SELECT itemname, 'Brand3'
FROM maintable
WHERE brand3 = 'Y'
UNION ALL
SELECT itemname, 'Brand4'
FROM maintable
WHERE brand4 = 'Y'
UNION ALL
SELECT itemname, 'Brand5'
FROM maintable
WHERE brand5 = 'Y'
UNION ALL
SELECT itemname, 'Brand6'
FROM maintable
WHERE brand6 = 'Y'
UNION ALL
SELECT itemname, 'Brand7'
FROM maintable
WHERE brand7 = 'Y'
UNION ALL
SELECT itemname, 'Brand8'
FROM maintable
WHERE brand8 = 'Y'
UNION ALL
SELECT itemname, 'Brand9'
FROM maintable
WHERE brand9 = 'Y'
它使用了几个UNION ALL报表以确保显示所有记录。
如果表格的列设置为Y,它将在结果集的第二列中显示品牌名称。这将允许您在单个结果集中显示项目名称和品牌列表。
您需要重新命名我的查询中的itemname列,maintainable以及每个brand1-9列以匹配您的表。
除了9个语句和一个UNION ALL之外,可能还有更好的方法,但这应该起作用。
这是否给你你需要的东西?
你的表格结构是什么样的? – bbrumm
品牌在主表中的9列左右设置为“是/否”值。品牌表中包含品牌的全名,然后是显示它们适用的是/否列。有几个“父母”品牌,因此是重复的。 – RSDD
老实说,如果通过使用INSERT创建临时表的记录消除连接和循环将是一条更好的路径,我也对此表示赞同。 – RSDD