2013-07-12 31 views
0

我的問題是在下面的表結構。所有按storeNamestoreId分組的項目將顯示每個商店的每件商品的總數。但是,一些在一些商店,因此顯示爲空..不出售的項目是不是能夠基於包含空值的2列的SQL Server 2008分組

  • 顯示雞蛋&培根,而不是NULL的第8條中itemName柱和
  • 顯示焦炭代替NULL第二個8在itemName列等。

我不知道他們有多少物品。所以它是動態的。

我想這樣做,因爲我用pentaho報表設計器創建了一個交叉表報表。它工作正常,但它需要數據才能正確顯示它。所以每個商品必須有8個記錄,每個商店一個。所以我可以按商店分組,itemname。因此,報告顯示 - 或0表示這些商店未售出的商品。

我有什麼

storeId storeName itemName total 
1  storeA egg&bacon 75 
2  storeB NULL  NULL 
3  storeC egg&bacon 30 
4  storeD NULL  NULL 
5  storeE NULL  NULL 
6  storeF egg&bacon 50 
7  storeG NULL  NULL 
8  storeH NULL  NULL 
1  storeA coke  105 
2  storeB coke  90 
3  storeC coke  60 
4  storeD NULL  NULL 
5  storeE coke  20 
6  storeF coke  80 
7  storeG NULL  NULL 
8  storeH NULL  NULL 

我想要的東西(如下面的表格是不現實的,我可以對組創建單獨的列他們,但又能怎麼樣?)

storeId storeName itemName total 
    1  storeA egg&bacon 75 
    2  storeB egg&bacon 0 
    3  storeC egg&bacon 30 
    4  storeD egg&bacon 0 
    5  storeE egg&bacon 0 
    6  storeF egg&bacon 50 
    7  storeG egg&bacon 0 
    8  storeH egg&bacon 0 
    1  storeA coke  105 
    2  storeB coke  90 
    3  storeC coke  60 
    4  storeD NULL  0 
    5  storeE coke  20 
    6  storeF coke  80 
    7  storeG NULL  0 
    8  storeH NULL  0 

這是樣本SQL語句

SELECT storeId , storeName, itemName, total FROM STORE 
LEFT OUTER JOIN 
(
    SELECT storeId, storeName, itemId, total FROM REVENUE_CENTER as RVC 
    LEFT OUTER JOIN MENU_ITEM_TOTAL as MIT ON STORE.storeId = MIT.storeId  
) as subQ ON STORE.storeId = subQ.storeId 

LEFT OUTER JOIN MENU_ITEM as MI ON MI.itemId = subQ.itemId 

在此先感謝 Oz。

+0

我也很感激,如果有人建議一種替代方法。 – Ozland

+0

什麼是收入中心? – Brian

回答

0
  1. 如果你想知道你有必須的項目名稱至少設置爲「蛋&培根」商店零雞蛋&培根

  2. 在總欄更改爲空爲零你可以使用ISNULL(itemName,0)

  3. 由於storeid和name是固定的,因此您應該只將storeid保留在表中,並按它進行分組(性能更好,數據空間更少)並將存儲名稱保存在另一個表中。這將通過聲明將您的組更改爲僅基於商店ID。

  4. 考慮不保存項目的記錄shat現在是null,null - 這是您的代碼應該處理的內容。

相關問題