各位大神请看:;WITH Stocks AS (
SELECT a.Title,StoreName ,'总库存:'+CONVERT(VARCHAR,b.Qty)+' 在单量:'+CONVERT(VARCHAR,b.QtyOut) QtyDetail 
FROM #Table_Goods a LEFT JOIN #Table_Stock b ON a.GoodId = b.GoodId

SELECT * FROM Stocks 
PIVOT (max(QtyDetail) for StoreName in (总仓,分仓)) pv语句执行后:
; 怎么可以把B2行分仓的值设为 '总库存:0 在单量:0' ?
我已经试过 isnull() 对于QtyDetail  了,实现不了。
请问有什么方法吗? 附上代码:
CREATE TABLE #Table_Stock(
GoodId INT,
Qty INT,
QtyOut INT,
StoreName VARCHAR(32)
 )
 
  CREATE TABLE #Table_Goods(
GoodId int,
Title VARCHAR(126)
 )
 
 INSERT INTO #Table_Stock ( GoodId, Qty, QtyOut, StoreName )
SELECT 1,10,0,'总仓' UNION
SELECT 1,0,0,'分仓' UNION
SELECT 2,5,1,'总仓'INSERT INTO #Table_Goods ( GoodId, Title )
SELECT 1,'A1' UNION
SELECT 2,'B2'
 
;WITH Stocks AS (
SELECT a.Title,StoreName ,'总库存:'+CONVERT(VARCHAR,b.Qty)+' 在单量:'+CONVERT(VARCHAR,b.QtyOut) QtyDetail 
FROM #Table_Goods a LEFT JOIN #Table_Stock b ON a.GoodId = b.GoodId

SELECT * FROM Stocks 
PIVOT (max(QtyDetail) for StoreName in (总仓,分仓)) pvpivotIsNullNull

解决方案 »

  1.   

    外面再套一个select 你现在的结果是数据源,这样就可以isnull了
      

  2.   


    CREATE TABLE #Table_Stock(
        GoodId INT,
        Qty INT,
        QtyOut INT,
        StoreName VARCHAR(10)
    )
      
    CREATE TABLE #Table_Goods(
        GoodId int,
        Title VARCHAR(10)
    )
      
    INSERT INTO #Table_Stock(GoodId, Qty, QtyOut, StoreName)
    SELECT 1,10,0,'总仓' UNION
    SELECT 1,0,0,'分仓' UNION
    SELECT 2,5,1,'总仓'
     
    INSERT INTO #Table_Goods(GoodId, Title)
    SELECT 1,'A1' UNION
    SELECT 2,'B2'
    ;WITH Stocks AS (
    SELECT a.Title,
           b.StoreName,
           '总库存:'+CONVERT(VARCHAR,b.Qty)+' 在单量:'+CONVERT(VARCHAR,b.QtyOut) 'QtyDetail'
    FROM #Table_Goods a
    LEFT JOIN #Table_Stock b ON a.GoodId = b.GoodId

    SELECT Title,
           总仓,
           isnull(分仓,'总库存:0 在单量:0') '分仓'
    FROM Stocks 
    PIVOT(max(QtyDetail) for StoreName in (总仓,分仓)) pv/*
    Title      总仓                      分仓
    ---------- ---------------------- ----------------------
    A1         总库存:10 在单量:0       总库存:0 在单量:0
    B2         总库存:5 在单量:1        总库存:0 在单量:0(2 row(s) affected)
    */