[英]SQL Server 2014 How to make a single line result from 2 tables
Can anyone please help me with making a query? 任何人都可以帮助我进行查询吗? I have 2 tables, Articles and WareHouse: 我有2张桌子,文章和仓库:
The Article table have this record: Article表具有以下记录:
ArticleCode ArticleName
A120022 Article1
The Second Table have this Records: 第二个表具有以下记录:
WArticleCode WareHouseNo Quantity
A120022 1 18
A120022 2 7
A120022 2 3
A120022 2 3
A120022 1 11
A120022 1 22
A120022 3 1
A120022 2 8
A120022 3 9
A120022 3 3
A120022 1 9
What I'm trying to accomplish is to Have this result: 我想要完成的是获得以下结果:
ArticleCode ArticleName ArtInDISTWareh TotalQua WareHouses
A120022 Article1 3 94 W1-60 ; W2-21 ; W3-13
I made this Query: 我做了这个查询:
SELECT a.ArticleCode
,a.ArticleName
,ISNULL(b.WareHouseNo, 1) AS WareHouse
,ISNULL(SUM(b.Quantity),0) AS Quantity
FROM [BazaZaWeb].[dbo].[Articles] a
LEFT OUTER JOIN WareHouse b ON b.WArticleCode = a.ArticleCode COLLATE DATABASE_DEFAULT
GROUP BY a.ArticleCode,a.ArticleName,b.WareHouseNo
And this is the result: 结果如下:
ArticleCode ArticleName WareHouse Quantity
A120022 Article1 1 60
A120022 Article1 2 21
A120022 Article1 3 13
I can get almost what I want but not Grouping By b.WareHouseNo and using Distinct, but I cant figure out how to count the Warehouses in which the article exists (ArtInDISTWareh) 我几乎可以得到想要的东西,但不能按b.WareHouseNo进行分组并使用Distinct,但是我无法弄清楚如何计算商品所在的仓库(ArtInDISTWareh)
Thank You in advance for Your help 预先感谢您的帮助
try following: 尝试以下操作:
declare @Article table (ArticleCode varchar(10), ArticleName varchar(100))
declare @WareHouse table (WArticleCode varchar(10), WareHouseNo int, Quantity int)
insert into @Article
select 'A120022','Article1'
insert into @WareHouse
select 'A120022',1,18 union all
select 'A120022',2, 7 union all
select 'A120022',2, 3 union all
select 'A120022',2, 3 union all
select 'A120022',1,11 union all
select 'A120022',1,22 union all
select 'A120022',3, 1 union all
select 'A120022',2, 8 union all
select 'A120022',3, 9 union all
select 'A120022',3, 3 union all
select 'A120022',1, 9
select WArticleCode, WareHouseNo, (select sum(Quantity) from @WareHouse where WArticleCode = w.WArticleCode) TotalQuantity,
'W' + convert(varchar(10), WareHouseNo) + '-' + convert(varchar(10), sum(Quantity)) Warehouses
into #temp
from @WareHouse w
group by WArticleCode, WareHouseNo
select distinct WArticleCode, TotalQuantity, Stuff(
(SELECT N'; ' + Warehouses FROM #temp where WArticleCode = t.WArticleCode FOR XML PATH(''),TYPE)
.value('text()[1]','nvarchar(max)'),1,2,N'') Warehouses
into #ftemp
from #temp t
select a.ArticleCode, a.ArticleName, isnull(nullif(len(Warehouses) - len(replace(Warehouses, ';', ''))+1, 1),1) ArtInDISTWareh, TotalQuantity, Warehouses
from @Article a
join #ftemp t on WArticleCode = a.ArticleCode
drop table #temp
drop table #ftemp
Thanks. 谢谢。
To get ArtInDISTWareh
, all you need to do is add this to your select clause: 要获取ArtInDISTWareh
,只需将其添加到select子句中:
, count(distinct WarehouseNo) ArtInDISTWareh
To get information about more than one warehouse in a single record, do a google search on sql server stuff for xml path
. 要在一条记录中获取有关多个仓库的信息,请在sql server stuff for xml path
上执行google搜索sql server stuff for xml path
。 As far as the values you are looking for specifically, there is not enough information in your question for anyone to provide assistance. 就您要具体查找的值而言,您的问题中没有足够的信息可让任何人提供帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.