Сортировка списка по верхнему результату за час от даты и времени
Привет.
Я пытаюсь сделать запрос, чтобы вычислить общее количество записей в час в таблице и показать только верхнее значение для даты.
Например, сегодня модель а имеет результаты 6 для 100 ПК, 7 для 200 ПК и 8 для 50 ПК. В этом случае мне нужно показать только 200 ПК в столбце и время (7) в другом столбце.
Я смог показать верхние значения, но я не могу показать время, если я покажу время, то верх не работает...
Образцы:
В Том Числе Часов:
Без Верха[^]
Не Считая Часов:
WithTop[^]
Я очень ценю вашу помощь!
Что я уже пробовал:
Это тот самый запрос, который я пробовал до сих пор (без часа)
SELECT * FROM ( select count(barcodenum)as count1, date1, Model_sap, model_customer, linea from ( SELECT FinishGoods.linea, FinishGoods.Model_sap, model.model_customer,FinishGoods.BarCodeNum,CONVERT(VARCHAR(10), scanprod.fecha, 102) as date1, scanprod.fecha FROM FinishGoods INNER JOIN model ON FinishGoods.Model_sap = model.model_ext INNER JOIN scanprod ON FinishGoods.BarCodeNum = scanprod.barcodenum WHERE (FinishGoods.linea <> '0') AND (FinishGoods.linea <> '') AND FinishGoods.scandt is not null AND (scanprod.fecha >= '2016-03-18 06:00:00' AND scanprod.fecha <= '2016-03-22 23:59:59' ) ) as tbl1 group by date1, DATEPART(Hour, fecha), Model_sap, model_customer,linea--,hora1 --order by model_sap, linea ) AS HourlySalesData PIVOT( max(count1) FOR [date1] IN ([2016.03.18],[2016.03.19],[2016.03.20],[2016.03.21],[2016.03.22])) AS DatePivot order by model_customer
А этот с часовым включением:
SELECT * FROM ( select count(barcodenum)as count1, date1, Model_sap, model_customer, linea, (convert(int, DATEPART(Hour, fecha))) as hour_ from ( SELECT FinishGoods.linea, FinishGoods.Model_sap, model.model_customer,FinishGoods.BarCodeNum,CONVERT(VARCHAR(10), scanprod.fecha, 102) as date1, scanprod.fecha FROM FinishGoods INNER JOIN model ON FinishGoods.Model_sap = model.model_ext INNER JOIN scanprod ON FinishGoods.BarCodeNum = scanprod.barcodenum WHERE (FinishGoods.linea <> '0') AND (FinishGoods.linea <> '') AND FinishGoods.scandt is not null AND (scanprod.fecha >= '2016-03-18 06:00:00' AND scanprod.fecha <= '2016-03-22 23:59:59' ) ) as tbl1 group by date1, DATEPART(Hour, fecha), Model_sap, model_customer,linea--,hora1 --order by model_sap, linea ) AS HourlySalesData PIVOT( max(count1) FOR [date1] IN ([2016.03.18],[2016.03.19],[2016.03.20],[2016.03.21],[2016.03.22])) AS DatePivot order by model_customer
CHill60
Если Решение 1 не работает для Вас, пожалуйста, используйте ссылку "улучшить вопрос", чтобы опубликовать некоторые примеры данных из каждой таблицы - большинство людей даже не попытаются помочь, если они не могут легко воспроизвести вашу проблему. "Легко" означает возможность вырезать и вставлять, а не смотреть на картинку на другом сайте.
Один совет-избавьтесь от всех этих конвертов-используйте CAST (xxx AS DATE), чтобы получить только дату и DATEPART(hh, xxx), чтобы получить час. Это не только быстрее, но и вы используете правильные типы данных (используйте только varchar для строк)