SELECT 
strCode AS [商品编号]
, strProduct AS [商品名]
, strBrand AS [产品品牌]
, strSupplier AS [供应商]
, '+ @SQL +'
FROM(
SELECT
a.strCode
, a.strProduct
, a.strBrand
, d.strSupplier
, ISNULL(SUM(b.intNumber),0) AS [销售总数] 
-- , SUM(b.intNumber) AS [销售总数]
, CONVERT(VARCHAR(20),c.dtCreate,111) AS [日期]
FROM 
Setting_Product a
INNER JOIN Sale_OrderDetails b ON a.intProductID=b.intProductID
INNER JOIN Sale_Order c ON b.intOrderID=c.intOrderID 
INNER JOIN Setting_Supplier d ON d.intSupplierID=a.intSupplierID
WHERE c.dtCreate <= DATEADD(DAY,1,'+ QUOTENAME(@dt2,'''') +') 
AND c.dtCreate >= '+ QUOTENAME(@dt1,'''') +'
GROUP BY 
a.strCode
, a.strProduct
, a.strBrand
, d.strSupplier
, CONVERT(VARCHAR(20),c.dtCreate,111)
) AS c
PIVOT (
MAX([销售总数]) 
FOR [日期] IN ('+ @SQL +')
) AS d

解决方案 »

  1.   

    isnull()
      

  2.   


    那就是你程序的问题,数据库里你查询出来是是否还有NULL呢,如果没有就是程序问题了。如果有,看下是哪一列,这列是什么数据。
      

  3.   

    please use inside function isnull
      

  4.   

    有的日期没有销售总数吧  @SQL
      

  5.   

    可以弄个CTE 把这些日期内没有销售总数的生成销售额并赋值0