栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

SQL Server查询麻烦,多对多关系

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SQL Server查询麻烦,多对多关系

这样可以更容易地在多行中将其列为项目,商店,当前库存。照原样,除非您知道商店的数量,否则将需要使用动态sql。如果您知道潜在商店的数量,则可以使用

PIVOT
来返回结果。

假设您有2家商店(shop1和shop2),则类似这样:

select item_name, [Shop1], [Shop2]from (  select item_name, shop_name, currentstock  from item i  join shopstock ss on i.item_id = ss.item_id   join shop s on s.shop_id = ss.shop_id) xpivot (  max(currentstock)  for shop_name in ([Shop1],[Shop2])) p
  • sqlfiddle

这是动态sql方法,因为我怀疑您不知道可能的商店数量:

DECLARE @cols AS NVARCHAr(MAX),    @query  AS NVARCHAr(MAX)select @cols = stuff((select distinct ',' + quotename(shop_name)          from shop FOR XML PATH(''), TYPE ).value('.', 'NVARCHAr(MAX)')         ,1,1,'')set @query = 'select item_name,' + @cols + '  from   (     select item_name, shop_name, currentstock     from item i       join shopstock ss on i.item_id = ss.item_id        join shop s on s.shop_id = ss.shop_id ) x pivot  (     max(currentstock)     for shop_name in (' + @cols + ') ) p 'execute(@query)
  • sqlfiddle


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/517292.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号