2014-06-09 45 views
0

我這樣做很棘手,因此希望有人能夠提供幫助。這就是我希望我的最終結果是:Sql從From子句中選擇值

SELECT 'PRODUCT' AS ItemType, 
    'x' + CAST(MB_StaticOrderProducts.Quantity AS varchar(50)), 
    MB_StaticOrderProducts.ProductName + ' (' + CAST((MB_StaticOrderProducts.ProductSize) AS varchar(50)) + ' ' + MB_StaticProductMeasure.Value + ')' AS Name, 
    MB_StaticOrderProducts.ProductSizeID, 
    GTIN as BarCode 
FROM 
    MB_StaticOrderProducts 
INNER JOIN MB_StaticOrderVersions ON MB_StaticOrderProducts.StaticOrderVersionId = MB_StaticOrderVersions.StaticOrderVersionId 
    INNER JOIN MB_StaticProductMeasure ON MB_StaticOrderProducts.StaticProductMeasureId = MB_StaticProductMeasure.StaticProductMeasureId 
Inner Join ProductVariantAttributeCombination pvac on (pvac.Id = (select id from (select Id, cast(AttributesXml as xml) data from ProductVariantAttributeCombination) d cross apply data.nodes('//ProductVariantAttributeValue[Value[1] = 32]') data(d))) 
    WHERE 
     MB_StaticOrderProducts.StaticOrderVersionId = '8D803EAE-2CFC-455C-9CE7-0849618E1548' 

我想列,MB_StaticOrderProducts.ProductSizeId是在的4號線自段,ProductVariantAttributeCombination,其中數字32。有沒有辦法在該區域使用變量?

+1

*** SQL ***只是*結構化查詢語言* - 許多數據庫系統使用的語言,但不是數據庫產品......很多東西都是特定於供應商的 - 所以我們真的需要知道什麼* *你正在使用的數據庫系統**(以及哪個版本)(請相應地更新標籤)...... –

回答

0

使用Concat function

像這樣:

data.nodes(concat('//ProductVariantAttributeValue[Value[1] = ', 
        MB_StaticOrderProducts.ProductSizeId, 
        ']') 
+0

我得到這個錯誤,「XML數據類型方法的參數1」節點「必須是字符串文字」 – sjramsay

1

對於那些以往任何時候都需要它。我改變了data.nodes行:

data.nodes('//ProductVariantAttributeValue[Value[1] 
       =sql:column("MB_StaticOrderProducts.ProductSizeID")]') 

和所有的工作。謝謝。

+0

+1似乎你想通了:) –