Sql server pivotsql中的语法

Sql server pivotsql中的语法,sql-server,tsql,Sql Server,Tsql,我正在尝试以这种格式获取日期dd/MMM/yyyy 所以我使用了下面的查询 select REPLACE(CONVERT(NVARCHAR,GETDATE(), 106), ' ', '/') 但当我试图在下面的查询中应用它时,我得到了这个错误消息 错误:消息102,级别15,状态1,第13行“,”附近的语法不正确 动态查询和REPLACE函数中缺少单引号 你忘了添加替换 应该是: DECLARE @cols AS NVARCHAR(MAX), @query AS NVARCHA

我正在尝试以这种格式获取日期dd/MMM/yyyy

所以我使用了下面的查询

select REPLACE(CONVERT(NVARCHAR,GETDATE(), 106), ' ', '/')  
但当我试图在下面的查询中应用它时,我得到了这个错误消息


错误:消息102,级别15,状态1,第13行“,”附近的语法不正确


动态查询和REPLACE函数中缺少单引号

你忘了添加替换

应该是:

DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX)

select @cols = STUFF((SELECT ',' + QUOTENAME(Name) 
                      from  dbo.DailySales INNER JOIN dbo.Restaurants ON dbo.DailySales.RestaurantID = dbo.Restaurants.RestaurantID

                    group by Name
                    order by Name
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = 'SELECT  REPLACE(CONVERT(NVARCHAR, SalesDate, 106), '' '', ''/'') AS [Sales Date],' + @cols + ' from 
             (
  select SalesDate, Restaurants.Name, GrossSales
  from  dbo.DailySales INNER JOIN dbo.Restaurants ON dbo.DailySales.RestaurantID = dbo.Restaurants.RestaurantID
   WHERE MONTH(SalesDate) = 1 AND YEAR(SalesDate) = 2017 
            ) x
            pivot 
            (
                sum(GrossSales)
                for Name in (' + @cols + ')
            ) p '

execute(@query);

问题是嵌套的单引号SelectConvertNVarchar,SalesDate,106,/Chanukya仍然得到errorMsg 102,级别15,状态1,第1行“,”附近的语法不正确。消息102,15级,状态1,第6行“x”附近语法不正确。
DECLARE 
    @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX)

SELECT @cols = STUFF((SELECT ',' + QUOTENAME(Name) 
                      FROM dbo.DailySales INNER JOIN dbo.Restaurants ON dbo.DailySales.RestaurantID = dbo.Restaurants.RestaurantID
                    group by Name
                    order by Name
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

SET @query = 'SELECT 
    REPLACE(CONVERT(NVARCHAR, SalesDate, 106), '' '', ''/'') AS [Sales Date],
    ' + @cols + ' 
    FROM
    (
        SELECT
            SalesDate, 
            Restaurants.Name, 
            GrossSales
        FROM
            dbo.DailySales 
        INNER JOIN dbo.Restaurants ON dbo.DailySales.RestaurantID = dbo.Restaurants.RestaurantID
        WHERE 
            MONTH(SalesDate) = 1 AND YEAR(SalesDate) = 2017 
    ) x
    pivot 
    (
        SUM(GrossSales)
        FOR Name IN (' + @cols + ')
    ) p '

EXECUTE(@query);
REPLACE(CONVERT(NVARCHAR, SalesDate, 106), '' '', ''/'')
DECLARE @cols AS NVARCHAR(MAX),
    @query  AS NVARCHAR(MAX)

select @cols = STUFF((SELECT ',' + QUOTENAME(Name) 
                      from  dbo.DailySales INNER JOIN dbo.Restaurants ON dbo.DailySales.RestaurantID = dbo.Restaurants.RestaurantID

                    group by Name
                    order by Name
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')

set @query = 'SELECT  REPLACE(CONVERT(NVARCHAR, SalesDate, 106), '' '', ''/'') AS [Sales Date],' + @cols + ' from 
             (
  select SalesDate, Restaurants.Name, GrossSales
  from  dbo.DailySales INNER JOIN dbo.Restaurants ON dbo.DailySales.RestaurantID = dbo.Restaurants.RestaurantID
   WHERE MONTH(SalesDate) = 1 AND YEAR(SalesDate) = 2017 
            ) x
            pivot 
            (
                sum(GrossSales)
                for Name in (' + @cols + ')
            ) p '

execute(@query);