我有以下这些查询需要使用的表:一个报表:复杂的SQL查询从多个表
我只提及下表的相关列,以便它是排序和可以理解的。
- >项目[与列:的Item_ID,ItemCode,ITEMNAME等..]
Item_ID ItemCode ItemName
---------------------------------------------
1 P_1 Flower Pots
2 P_2 Parkar Pen
3 P_3 xyz
4 P_4 Aero Pace
- > channelstores【同列:商店编号,STORENAME等..]
Store_ID StoreName
---------------------------------
1 Amazon UK
2 Amazon US
3 eBay UK
4 eBay US
- > channel_A [与列:ITEM_ID,商店编号等...]
Item_ID Store_ID
---------------------
1 1
1 2
2 2
3 1
- > channel_B [与列:的Item_ID,商店编号等c ...]
Item_ID Store_ID
-------------------
1 3
1 4
2 3
3 3
表channel_A和channel_B分别具有Item_ID和Store_ID作为来自item和channelstores表的外键。现在
,问题是:我需要一个查询,可以给我结果为:
Item_ID ItemCode Amazon UK Amazon US eBay UK eBay US
---------------------------------------------------------------------
1 P_1 True True True True
2 P_2 False True True False
3 P_3 True False True False
4 P_4 False False False False
我:从项目表中的所有项目,其channelstores,channel_A和channel_B关系如下结果的列表使用下面的查询,但有问题得到真/假值:
Declare @StoreName as nvarchar(Max)
Declare @StrQuery nvarchar(Max)
set @StoreName=(SELECT STUFF((SELECT distinct ',' + '['+p1.[storename]+']'
FROM channelstores p1 FOR XML PATH(''), TYPE).value('.', 'NVARCHAR(MAX)'),1,1,''))
set @StrQuery=
'select Item_ID,ProductCode, '[email protected]+' from
(select i.Item_ID,i.itemcode as ProductCode,1 as Value,'''' as ChannelStore from item as i
) as x
pivot
(max(Value)
for ChannelStore in ('[email protected]+'))p order by ProductCode'
EXEC(@StrQuery)
谢谢。
你有多少个storeNames? – 2014-11-23 18:34:28
@M。页面,它是动态的,并在频道存储表中。目前有4个,但可能会增加。 – vicky 2014-11-23 18:38:39
所以你可能需要一个数据透视表。您可能会看看http://msdn.microsoft.com/en-us/library/ms177410(SQL.105).aspx – 2014-11-23 19:07:08