sqlserver中的SQL查询
有人能解释一下这个查询实际上在做什么吗sqlserver中的SQL查询,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,有人能解释一下这个查询实际上在做什么吗 SELECT u.business_id, u.name, u.cusine, MAX(u.values1) FROM SOURCE_DATA u UNPIVOT (values1 FOR cusine IN (Sandwiches, Pizza, Bars, Food, Mexican, Thai, Indian)) u WHERE u.values1 = 1 GROUP BY u.
SELECT
u.business_id,
u.name,
u.cusine,
MAX(u.values1)
FROM
SOURCE_DATA u
UNPIVOT
(values1 FOR cusine IN (Sandwiches, Pizza, Bars, Food, Mexican, Thai, Indian)) u
WHERE
u.values1 = 1
GROUP BY
u.business_id, u.name, u.cusine
ORDER BY
u.name
根据查询,看起来每个字段、三明治、比萨饼等都包含1或0 Unpivot获取列出的每个字段,并将其转换为两个字段,一个文本字段和一个值1。每个原始字段将成为一行。未列出的字段将被简单地复制下来 group by将从原始数据中返回所有业务id、名称和烹饪的组合,其中字段标记为1
简短的版本是,对于每个企业id和名称,它会得到一个在其原始字段中标记为1的每种菜肴的列表。例如,如果pizza有一个1,它将返回pizza的一行。您使用的是MySQL还是MS SQL Server?不要给未涉及的产品贴标签。不同的公司生产不同的软件包。即使两者都实现了SQL,它们也以不同的方式扩展SQL,有时使用不同的语法约定,使得它们之间的查询不兼容。请使用正确的标记。我怀疑查询生成了语法错误。