我有以下這些查詢需要使用的表:一個報表:複雜的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