akhter86 Ответов: 1

Я генерирую SQL-запрос для элемента qty sum date wise , но приходит ошибка (столбец " 30 "был указан несколько раз для "stat".)


я сталкиваюсь с ошибкой sql в запросе ,что я хочу, чтобы элемент qty мудрая сумма, но мой запрос генерирует ошибку любезно руководство

спасибо

Что я уже пробовал:

SELECT DISTINCT EntryDate INTO #Date11
FROM Probale
--WHERE     (EntryDate BETWEEN @StartDate AND @Enddate)
ORDER BY EntryDate

DECLARE @cols NVARCHAR(4000)
SELECT  @cols = COALESCE(@cols + ',[' + CONVERT(varchar, DATEPART(DAY, EntryDate), 112)
				+ ']','[' + CONVERT(varchar,DATEPART(DAY, EntryDate), 112) + ']')
FROM    #Date
ORDER BY EntryDate


-- Building the query with dynamic dates
--DECLARE @qry NVARCHAR(4000)
--SET @qry =
--'SELECT * FROM
--(SELECT EmpID, Status , ReportingDate
--FROM EmployeesAttendance)emp
--PIVOT (MAX(Status) FOR ReportingDate IN (' + @cols + ')) AS stat'

DECLARE  @qry NVARCHAR(4000) =
N'SELECT * 
FROM (SELECT ItemMasterFile.Codeitem,ItemMasterFile.Descriptionitem,Probale.prdqty, 
DATEPART(DAY, Probale.EntryDate)as DDate
FROM Probale  Inner Join ItemMasterFile on Probale.Codeitem=ItemMasterFile.Codeitem )prd
PIVOT (Sum(prdqty) FOR DDate IN (' + @cols + ')) AS stat 
'
-- Executing the query

EXEC(@qry)

Bryian Tan

Вы пробовали распечатать @cols и посмотреть, что в нем?

akhter86

как распечатать

Bryian Tan

PRINT @cols

akhter86

я просто запускаю этот запрос на sql а не печатаю col

1 Ответов

Рейтинг:
4

OriginalGriff

Вам нужно начать с того, что у вас есть в #Date - ваш код заполняет #Date11:

SELECT DISTINCT EntryDate INTO #Date11
FROM Probale
--WHERE     (EntryDate BETWEEN @StartDate AND @Enddate)
ORDER BY EntryDate
Но ваша команда COALESCE использует #Date, которую вы не показываете:
SELECT  @cols = COALESCE(@cols + ',[' + CONVERT(varchar, DATEPART(DAY, EntryDate), 112)
				+ ']','[' + CONVERT(varchar,DATEPART(DAY, EntryDate), 112) + ']')
FROM    #Date
ORDER BY EntryDate
Если бы вы имели в виду #Date11, это объяснило бы, почему Cols быть пустой.


akhter86

OriginalGriff я сделал #Date но результат не приходит

OriginalGriff

А вы пробовали #Date11?
Цитата: "Если бы вы имели в виду #Date11, это объяснило бы, почему Cols пуст."

akhter86

я не понял о чем ты говоришь

OriginalGriff

Какие данные вы ожидали использовать в своей команде COALESCE? Что вы ожидали от него получить?