Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: 1 2 3      [все]
 Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
Есть таблица вида
Товар Доход Дата
Маска 10 10,12,2011
Очки Г-2 5,9 10,12,2011
Штангель 100 14,12,2011

А нужно сделать таблицу вида
Товар 10,12,2011 14,12,2011
Маска 10 NULL
Очки Г-2 5,9 NULL
Штангель NULL 100


Пробовал сделать через Pivot но там нужно знать сколько столбцов, а я не могу ввоидть все столбцы так как это отчёт зща месяц или за год. Помогите пожалуста уже 2 часа бьюся.
5 окт 12, 20:19    [13276322]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
Товар Доход Дата
Маска 10 10.12.2011
Очки Г-2 5.9 10.12.2011
Штангель 100 14.12.2011


А нужно сделать таблицу вида
Товар 10.12.2011 14.12.2011
Маска 10 NULL
Очки Г-2 5.9 NULL
Штангель NULL 100
5 окт 12, 20:25    [13276335]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37077
Топ 10 вопрос 10.
5 окт 12, 20:25    [13276337]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
qwerty112
Guest
Kimel
...
Пробовал сделать через Pivot но там нужно знать сколько столбцов, а я не могу ввоидть все столбцы так как это отчёт зща месяц или за год. Помогите пожалуста уже 2 часа бьюся.

1
Pivot + динамический скл

2
>> отчёт зща месяц

если имя столбца, не дата, а день (1,2,3,...) то это всего 4-е варианта
можно "плюнуть" и сделать 4-е варианта по условию ...
5 окт 12, 20:27    [13276344]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
Дата в таблице храниться вида 2012-10-03 00:00:00.000 время не заполняется, функцией CONVERT (date, GETDATE()) я выдираю дату
в итоге идеальный вариант это когда я буду задавать диапазоны вида dfOrdersProducts.OrderDateCalc >= <FILTER1> AND qdfOrdersProducts.OrderDateCalc < <FILTER2> где фильтр 1 это от и фильтр 2 до.
То есть если это например 01.09.2012 - 01.10.2012 То столбцов должно быть соответственно 31 где 31 столбец это столбец Товар
Можете пожалуйста конкретней. Я знаю одно точно. Нету дня без продажи, то есть будут все стобцы диапазона
5 окт 12, 20:32    [13276357]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
Kimel,

Просто в Excel Это делается 3 щелчками, выбираю сводную таблицу, выбираю доход и товар, а дату перетягиваю как столбец и ВСЁ, помогите пожалуйста!!!!!!!!
5 окт 12, 20:39    [13276374]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
qwerty112
Guest
Kimel
Kimel,

Просто в Excel Это делается 3 щелчками, выбираю сводную таблицу, выбираю доход и товар, а дату перетягиваю как столбец и ВСЁ, помогите пожалуйста!!!!!!!!

делай в Экселе, чо ?
5 окт 12, 20:41    [13276379]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
qwerty112,

Та вот незадача, это нужно автоматизировать так как вывод будет в HTML и excel просто не будет на компе. То есть нужно сделать средствами SQL
5 окт 12, 20:45    [13276386]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
kalimba
Member

Откуда:
Сообщений: 297
Kimel
qwerty112,

Та вот незадача, это нужно автоматизировать так как вывод будет в HTML и excel просто не будет на компе. То есть нужно сделать средствами SQL
Посмотрите в сторону Reporting Services.
5 окт 12, 20:49    [13276402]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
kalimba,

Не катит. У меня есть программа и там есть раздел отчёты где можно вставлять произвольный sql код. Пользователь может только с программой работать. Мне нужно просто составить запрос...
5 окт 12, 20:51    [13276411]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
Kimel,

Я не могу поверить что то что в Excel делается в 3 щелчка в sql геморно. Я полюбому чё-то не учёл просветите плиз
5 окт 12, 20:56    [13276417]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
qwerty112
Guest
Kimel
Товар Доход Дата
Маска 10 10.12.2011
Очки Г-2 5.9 10.12.2011
Штангель 100 14.12.2011


А нужно сделать таблицу вида
Товар 10.12.2011 14.12.2011
Маска 10 NULL
Очки Г-2 5.9 NULL
Штангель NULL 100

--create table ##t (Товар varchar(10), Доход money, Дата datetime)
--
--set dateformat dmy
--
--insert into ##t 
--select 'Маска', 10, '10.12.2011' union all 
--select 'Очки Г-2', 5.9, '10.12.2011' union all
--select 'Штангель', 100, '14.12.2011' 

--select * from ##t

declare @SQL1 varchar(max)
declare @SQL varchar(max)

set @SQL1 = 
(select distinct 
	'['+left(convert(varchar, Дата, 120), 10)+'],' as 'data()' 
from ##t
where Дата between '20111201' and '20111231'
order by 1
for xml path(''))

set @SQL1 = left(@SQL1, len(@SQL1)-1)
	
print @SQL1	

set @SQL = 
'select Товар, '+@SQL1+'
from

(select Товар, left(convert(varchar, Дата, 120), 10) as xz, Доход
from ##t) a

pivot (sum(Доход) for xz in ('+@SQL1+')) pvt'

print @SQL

exec(@SQL)

Товар      2011-12-10            2011-12-14
---------- --------------------- ---------------------
Маска      10,00                 NULL
Очки Г-2   5,90                  NULL
Штангель   NULL                  100,00

(3 row(s) affected)
5 окт 12, 21:01    [13276431]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
qwerty112,

Спасибо большое, ваш запрос работает на 100%, но я высё утрировал, дело в том что у меня есть запрос.
SELECT qdfOrdersProducts.ProductCalc ,SUM((SalePrice - qdfArrivalsProducts.Price) * qdfOrdersProducts.Quantity) AS 'Прибыль',
OrderDateCalc FROM qdfOrdersProducts
left outer JOIN qdfArrivalsProducts ON qdfOrdersProducts.ProductID = qdfArrivalsProducts.ProductID
left outer JOIN qdfOrders ON qdfOrdersProducts.OrderID = qdfOrders.ID
WHERE qdfOrdersProducts.OrderDateCalc >=
(select top 1 qdfArrivalsProducts.DocumentDateCalc
from qdfArrivalsProducts where ProductID = qdfOrdersProducts.ProductID order by DocumentDateCalc desc)

group by qdfOrdersProducts.ProductCalc,OrderDateCalc
order by OrderDateCalc

результатом которого и ЕСТЬ
ProductCalc Прибыль OrderDateCalc
Очки откидные круглые Китай 99,508 2012-10-03 00:00:00.000
Очки ЗП-12 без войлока 5,5 2012-10-05 00:00:00.000
Очки откидные круглые Китай 24,631 2012-10-05 00:00:00.000
Очки откидные прямоугольные Китай 29,508 2012-10-05 00:00:00.000

Как бы таблица. То есть данные у меня хранятся не в таблице а извлекаются благодаря запрос, а теперь сам вопрос. Как мне мой запрос приделать к вашему, попробовал где вставить в from результата 0.
5 окт 12, 21:13    [13276465]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
qwerty112
Guest
Kimel
qwerty112,

+
Спасибо большое, ваш запрос работает на 100%, но я высё утрировал, дело в том что у меня есть запрос.
SELECT  qdfOrdersProducts.ProductCalc ,SUM((SalePrice - qdfArrivalsProducts.Price) * qdfOrdersProducts.Quantity) AS 'Прибыль',
OrderDateCalc FROM qdfOrdersProducts
 left outer JOIN qdfArrivalsProducts  ON  qdfOrdersProducts.ProductID = qdfArrivalsProducts.ProductID 
 left outer JOIN qdfOrders ON qdfOrdersProducts.OrderID = qdfOrders.ID 
 WHERE qdfOrdersProducts.OrderDateCalc >= 
 (select top 1 qdfArrivalsProducts.DocumentDateCalc 
 from qdfArrivalsProducts where ProductID = qdfOrdersProducts.ProductID order by DocumentDateCalc desc) 

group by qdfOrdersProducts.ProductCalc,OrderDateCalc
order by OrderDateCalc


результатом которого и ЕСТЬ
ProductCalc ПрибыльOrderDateCalc
Очки откидные круглые Китай99,5082012-10-03 00:00:00.000
Очки ЗП-12 без войлока5,52012-10-05 00:00:00.000
Очки откидные круглые Китай24,6312012-10-05 00:00:00.000
Очки откидные прямоугольные Китай29,5082012-10-05 00:00:00.000


Как бы таблица. То есть данные у меня хранятся не в таблице а извлекаются благодаря запрос, а теперь сам вопрос. Как мне мой запрос приделать к вашему, попробовал где вставить в from результата 0.

везде, где в моём скрипте таб. ##t , вместо неё, вписываеш весь свой запрос (в скобках, разумеется и алиас в конце, типа так - ( ... ) t )

...даа, и фильтр по датам нужно делать в твоём запросе
5 окт 12, 21:25    [13276486]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
qwerty112,

О боги. у меня это вышло. Я бы не додумался до альясов, я не знаю что это. Я вообще мало понимаю запрос но всё работает. Конечный вариант такой

declare @SQL1 varchar(max)
declare @SQL varchar(max)
set @SQL1 = 
(select distinct 
	'[' + left(convert(varchar, Дата, 120), 10) + '],' as 'data()' 
from (select  qdfOrdersProducts.ProductCalc as Товар,SUM((SalePrice - qdfArrivalsProducts.Price) * qdfOrdersProducts.Quantity) as Прибыль,
OrderDateCalc as Дата from qdfOrdersProducts
 left outer join qdfArrivalsProducts  on  qdfOrdersProducts.ProductID = qdfArrivalsProducts.ProductID 
 left outer join qdfOrders on qdfOrdersProducts.OrderID = qdfOrders.ID 
 where qdfOrdersProducts.OrderDateCalc >= 
 (select top 1 qdfArrivalsProducts.DocumentDateCalc 
 from qdfArrivalsProducts where ProductID = qdfOrdersProducts.ProductID order by DocumentDateCalc desc ) 
group by qdfOrdersProducts.ProductCalc,OrderDateCalc) t
for xml path(''))
set @SQL1 = left(@SQL1, len(@SQL1)-1)
set @SQL = 
'SELECT Товар, ' + @SQL1 + '
from
(select Товар, left(convert(varchar, Дата, 120), 10) as xz, Прибыль
from (select  qdfOrdersProducts.ProductCalc as Товар,SUM((SalePrice - qdfArrivalsProducts.Price) * qdfOrdersProducts.Quantity) as Прибыль,
OrderDateCalc as Дата from qdfOrdersProducts
 left outer join qdfArrivalsProducts  on  qdfOrdersProducts.ProductID = qdfArrivalsProducts.ProductID 
 left outer join qdfOrders on qdfOrdersProducts.OrderID = qdfOrders.ID 
 where qdfOrdersProducts.OrderDateCalc >= 
 (select top 1 qdfArrivalsProducts.DocumentDateCalc 
 from qdfArrivalsProducts where ProductID = qdfOrdersProducts.ProductID order by DocumentDateCalc desc ) 
group by qdfOrdersProducts.ProductCalc,OrderDateCalc) t) a
pivot (sum(Прибыль) for xz in (' + @SQL1 + ')) pvt'
exec(@SQL)


Единственная проблема что в Студии Mssql без проблем всё. А вот когда в программу вставляю пишет ошибку типа вы указали не существующую таблицу... Это очень жаль значит всё зря. Хотя если можно создать что-то типа функции и обращаться к ней то это гуд.. А нет, вот придумал, а как это сделать в виде представления. То есть создать представление в котором вся эта каша будет и я смогу видеть изменения в реальном времени, подскажите пожалуйста
5 окт 12, 21:42    [13276529]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
Да и вот ещё что Программа поддерживает VBS скрипты, мб там можно как-то реализовать
5 окт 12, 21:47    [13276541]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 37077
Kimel
А вот когда в программу вставляю пишет ошибку типа вы указали не существующую таблицу...
Какую еще такую программу?
Kimel
Хотя если можно создать что-то типа функции и обращаться к ней то это гуд.. А нет, вот придумал, а как это сделать в виде представления. То есть создать представление в котором вся эта каша будет и я смогу видеть изменения в реальном времени, подскажите пожалуйста
Только процедуру.
5 окт 12, 21:53    [13276553]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
Гавриленко Сергей Алексеевич,

Программа http://www.simple-soft.ru/ProductsCount.htm
5 окт 12, 22:09    [13276603]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
Kimel,

Скажите а можно ли создать какой-то батник или скрипт что бы при нажатии выполнялся запрос а результат в csv сохранялся, и если можн ото как?
5 окт 12, 22:12    [13276612]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
qwerty112
Guest
Kimel
Программа http://www.simple-soft.ru/ProductsCount.htm

гыыы )) популярная, ёлы, программа, - в Аксе тоже раза 3-и всплывала

Kimel
Kimel,

Скажите а можно ли создать какой-то батник или скрипт что бы при нажатии выполнялся запрос а результат в csv сохранялся, и если можн ото как?

в этой жизни, вообще, - мало невозможного ...

но давай сначала "от простого" :
- можеш ты создать функцию (функцию - в понимании скл сервера) ? можно из "программы" вызывать запрос с функцией ?

если можно, то проще будет сделать инлайн функцию, в которую будет передаватся год/месяц, для которого делается отчет, и пользоватся ей
5 окт 12, 22:24    [13276640]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
qwerty112,

Я думаю там функции пашут. Но я не имел с ними дела за ненадобностью, можете помочь составить функцию я её вставлю и сразу проверю?
5 окт 12, 22:38    [13276690]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
qwerty112
Guest
Kimel
qwerty112,

Я думаю там функции пашут. Но я не имел с ними дела за ненадобностью, можете помочь составить функцию я её вставлю и сразу проверю?

create function dbo.test (@a int)
returns table
as
return	select @a as a


а так провериш
select * from dbo.test(100500)
5 окт 12, 22:45    [13276710]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
qwerty112,

со студии пашет, в программе пишет
таблица test() указанная в части FROM выражения sql не существует в базе ((( это наверное плохо
5 окт 12, 22:52    [13276745]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
qwerty112,

Послушайте, что если сделать представление на основе функции, а потом создавать отчёт в программе простым select запросом из представления??????
5 окт 12, 23:01    [13276793]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
qwerty112
Guest
Kimel
qwerty112,

со студии пашет, в программе пишет
таблица test() указанная в части FROM выражения sql не существует в базе ((( это наверное плохо

ага

----
а вьюху, ты говориш, можно использовать ?
можно сделать вью, которое будет возвращать такой отчет за последние столько-то дней (30 или 50 или 150 - это не суть важно)
5 окт 12, 23:06    [13276814]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
qwerty112,

Я попробовал в окно создания вьюхи вставить весь запрос в результате облом. Это я встудии делал. А вьюхи да можно юзать.
5 окт 12, 23:08    [13276821]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
qwerty112,

МОЖНО использовать VBS скрипты. Это я точно знаю . Вот одитн из них которых уже в проге.
'Данный код предназначен для выгрузки счетов в 1С через обработку. Единственный и обязательный параметр - ID экспортируемого счета
'Скрипт работает совместно с файлом ExportTo1c.ert, который должен находится в корневом каталоге необходимой конфигурации 1С.
'® Простой софт
'
'ВНИМАНИЕ: В коде обработки прописан полный путь к базе, задаваемый инсталятором по умолчанию.
'Если Вы переместили или переименовали рабочую базу - необходимо скорректировать путь в коде обработки.
'Обработка тестировалась на релизе 1С:Бухгалтерия 7.70.504. Для других конфигураций может потребоваться модификация обработки,
'для чего в коде обработки есть все необходимые комментарии.
'
'Принцип работы обработки:
'1.  Обработка получает параметром формы ID счета из "Учета клиентов".
'2.  По запросу к базе УК получает необходимые в 1С реквизиты клиента и счета.
'3.  Находит\создает в 1С необходимый элемент Справочника.Контрагенты,
'4.  Находит\создает в 1С необходимый элемент Справочника.Номенклатура.
'5.  Создает, заполняет и сохраняет Докуент.Счет на указанную дату.
'5.1 Так как нумерация счетов своя - импортированные счета имеют префикс УК.
'6   Дописывает в комментарий номер счета 1С (поле tblInvoices.Notes)
'6.1 При необходимости в таблице tblInvoices можно созать отдельное поле "Номер в 1С".
'    Номер документов в 1С - обычно поле char(10), но лучше уточнить в конфигураторе
'    и отредактировать процедуру ОбновитьСчетУчетаКлиентов()

Const BASE1C = "c:\1c\1sbdb" 'полный путь к базе 1С, в которую производится экспорт счетов - ЗАДАЙТЕ ПРАВИЛЬНЫЙ ПУТЬ!
Const ERTNAME = "ExportTo1c.ert" 'имя файла ERT с обработкой импорта
Dim sBase1C     'полный путь к базе 1С, в которую производится экспорт счетов
Dim objArgs	'объект для работы с параметрами командной строки вызова
Dim iInvoiceID	'ID импортируемого счета
Dim objV7	'OLE объект системы "1С:Предприятие"
Dim sUser1c	'имя пользователя 1С. Дожен быть пустым, есть в 1С не используются пользователи
Dim sPass1c	'пароль пользователя 1С. Должен быть пустым, если в 1С не используются пользователи
Dim sExec1c	'строка для формирования команд 1С
Dim iRes	'код ошибки, при обращении к 1С

sBase1C = BASE1C
sBase1C = InputBox("Введите полный путь к базе данных 1С, в которую будет производиться экспорт счетов", "Путь к базе 1С", sBase1C)

If sBase1C > "" Then
  Set objArgs = WScript.Arguments 'получение объекта для чтения параметров строки запуска файла

  If objArgs.Count = 0 Then 'не передан параметр
    MsgBox "Обязательный параметр ID экспортируемого счета не был передан в файл-скрипт." & vbCr _
    & "Задайте правильно команду для данной кнопки в настройках панели инструментов." & vbCr _
    & "Пример команды вызова файла-скрипта: ExportTo1c.vbs /[ID]", vbExclamation, "Отсутствует параметр"
  Else '> 0 - параметр был передан
    'получаем ID экспортиремого счета из строки параметра запуска
    'например, вызов данного файла был такой C:\ExportTo1c.vbs /1 или такой C:\ExportTo1c.vbs /[ID]

    iInvoiceID = Right(objArgs(0), Len(objArgs(0)) - 1) 'получаем, например, 1

    'при настройке импорта необходимо указать параметры базы 1С:
    sUser1c = "" ' имя пользователя (должно быть пустым, если пользователи не используются)
    sPass1c = "" ' пароль (должно быть пустым, если пользователи не используются)

    'собираем строку запуска и инициализируем 1С
    sExec1c = "/D" & sBase1C
    If sUser1c > "" Then sExec1c = sExec1c + " /N" + sUser1c
    If sPass1c > "" Then sExec1c = sExec1c + " /P" + sPass1c
    Set objV7 = CreateObject("V77.Application") 'запуск OLE объекта 1C
    iRes = objV7.Initialize(objV7.RMTrade, sExec1c, "NO_SPLASH_SHOW") 'загрузка конфигурации

    'строка передачи в 1С - открытие формы обработки и передача ей параметром ID нужного счета
    sExec1c = "ОткрытьФормуМодально(""Отчет"", " & iInvoiceID & ", """ & sBase1C & "\" & ERTNAME & """)"
    objV7.ExecuteBatch sExec1c 'Вызов обработки импорта
  End If
End If
5 окт 12, 23:10    [13276828]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
qwerty112
Guest
Kimel
qwerty112,

МОЖНО использовать VBS скрипты. Это я точно знаю . Вот одитн из них которых уже в проге.

вбс тут офтопик,
не наду сюда эту херь постить
понадобится - в форум VB с этим иди

-------
попробуй в студии это выполнить
select null as Товар, [1], [2], [3]
from
(select distinct left(convert(varchar, OrderDateCalc, 120), 10) as OrderDateCalc, row_number() over(order by OrderDateCalc desc) as xz
from qdfOrdersProducts) a
pivot (max(OrderDateCalc) for xz in ([1], [2], [3])) pvt

union all

select Товар, [1], [2], [3]
from
(select qdfOrdersProducts.ProductCalc as Товар, cast(SUM((SalePrice - qdfArrivalsProducts.Price) * qdfOrdersProducts.Quantity) as varchar) as Доход, dense_rank() over(order by qdfOrdersProducts.OrderDateCalc desc) as xz
from qdfOrdersProducts
inner join qdfArrivalsProducts  on  qdfOrdersProducts.ProductID = qdfArrivalsProducts.ProductID 
inner join qdfOrders on qdfOrdersProducts.OrderID = qdfOrders.ID
group by qdfOrdersProducts.ProductCalc, qdfOrdersProducts.OrderDateCalc) a
pivot (max(Доход) for xz in ([1], [2], [3])) pvt

order by 1


и что это за дата в строках заказа - qdfOrdersProducts.OrderDateCalc ?
в qdfOrders, что нет даты заказа ?
5 окт 12, 23:31    [13276890]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
qwerty112
Guest
fix
qwerty112
select null as Товар, [1], [2], [3]
from
(select left(convert(varchar, OrderDateCalc, 120), 10) as OrderDateCalc, dense_rank() over(order by OrderDateCalc desc) as xz
from qdfOrdersProducts) a
pivot (max(OrderDateCalc) for xz in ([1], [2], [3])) pvt

union all

select Товар, [1], [2], [3]
from
(select qdfOrdersProducts.ProductCalc as Товар, cast(SUM((SalePrice - qdfArrivalsProducts.Price) * qdfOrdersProducts.Quantity) as varchar) as Доход, dense_rank() over(order by qdfOrdersProducts.OrderDateCalc desc) as xz
from qdfOrdersProducts
inner join qdfArrivalsProducts  on  qdfOrdersProducts.ProductID = qdfArrivalsProducts.ProductID 
inner join qdfOrders on qdfOrdersProducts.OrderID = qdfOrders.ID
group by qdfOrdersProducts.ProductCalc, qdfOrdersProducts.OrderDateCalc) a
pivot (max(Доход) for xz in ([1], [2], [3])) pvt

order by 1

5 окт 12, 23:33    [13276896]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
qwerty112,

qdfOrdersProducts.OrderDateCalc это дата из ордерс
вот код вьюшки что бы всё стало ясно.
SELECT dbo.tblOrdersProducts.ID, dbo.tblOrdersProducts.Ordinal, dbo.tblOrdersProducts.ProductID, dbo.tblOrdersProducts.Quantity, dbo.tblOrdersProducts.SalePrice,
dbo.tblOrdersProducts.Amount, dbo.tblOrdersProducts.AddTime, dbo.tblOrdersProducts.OrderID, dbo.tblMain.ProductCode AS ProductCodeCalc,
dbo.tblMain.Product AS ProductCalc, dbo.tblMain.ProductGroup AS ProductGroupCalc, dbo.tblMain.ProductType AS ProductTypeCalc,
dbo.tblOrders.StoreID AS StoreIDCalc, dbo.tblOrders.OrderDate AS OrderDateCalc, dbo.tblOrders.OrderStatus AS OrderStatusCalc
FROM dbo.tblOrdersProducts LEFT OUTER JOIN
dbo.tblOrders ON dbo.tblOrdersProducts.OrderID = dbo.tblOrders.ID LEFT OUTER JOIN
dbo.tblMain ON dbo.tblOrdersProducts.ProductID = dbo.tblMain.ID

вот результат выполнения того что ты дал
Товар 1 2 3
NULL 2012-10-05 2012-10-03 NULL
Очки ЗП-12 без войлока 5.5 NULL NULL
Очки откидные круглые Китай 24.631 99.508 NULL
Очки откидные прямоугольные Китай 29.508 NULL NULL

Кстати ОЧЕНЬ круто, что без перемененных всё!!!!
5 окт 12, 23:43    [13276937]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
Kimel,

но я могу растроить, программа не понимает альясы, именно прога а не студия, оно жалуется на
select null as Товар, [1], [2], [3]
from
(select left(convert(varchar, OrderDateCalc, 120), 10) as OrderDateCalc, dense_rank() over(order by OrderDateCalc desc) as xz
[color=red]from qdfOrdersProducts) a[/color]
pivot (max(OrderDateCalc) for xz in ([1], [2], [3])) pvt

union all

select Товар, [1], [2], [3]
from
(select qdfOrdersProducts.ProductCalc as Товар, 
cast(SUM((SalePrice - qdfArrivalsProducts.Price) * qdfOrdersProducts.Quantity) as varchar) 
as Доход, dense_rank() over(order by qdfOrdersProducts.OrderDateCalc desc) as xz
from qdfOrdersProducts
inner join qdfArrivalsProducts  on  qdfOrdersProducts.ProductID = qdfArrivalsProducts.ProductID 
inner join qdfOrders on qdfOrdersProducts.OrderID = qdfOrders.ID
group by qdfOrdersProducts.ProductCalc, qdfOrdersProducts.OrderDateCalc) a
pivot (max(Доход) for xz in ([1], [2], [3])) pvt

order by 1
5 окт 12, 23:51    [13276956]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
Kimel,

http://s019.radikal.ru/i635/1210/17/4ba7a673ce9ct.jpg
5 окт 12, 23:54    [13276966]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
Kimel,

ЧЁРТ простите модеры за флуд
http://s019.radikal.ru/i635/1210/17/4ba7a673ce9c.png
5 окт 12, 23:54    [13276968]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
Kimel,

я подобавлял товары и тепреь результат выглядит так
Товар 1 2 3
NULL 2012-10-11 2012-10-06 2012-10-05
Cтекло Г-2 52/102 мм 4.464 NULL NULL
Очки Provaid не потеющее поликарбонатное стекло Китай NULL 164.704 NULL
Очки ЗП-12 без войлока NULL NULL 5.5
Очки откидные круглые Китай NULL NULL 24.631
Очки откидные прямоугольные Китай NULL NULL 29.508


интересно то что я добавил ещё на 11 число и 3 число ВЫПАЛО отсюда (((((((
6 окт 12, 00:02    [13276984]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
qwerty112
Guest
Kimel
Kimel,

но я могу растроить, программа не понимает альясы, именно прога а не студия, оно жалуется на

это ты будеш растраивать продавцов той проги, - меня не надо

раз в студии выполняется, - то делай на этом запросе вьюху, а из "программе" - её вызывай
только заполни на сколько дней выводить хочеш (выделил)

create view dbo.Haba_Haba
as
select null as Товар, [1], [2], [3], ..., [30]
from
(select left(convert(varchar, OrderDateCalc, 120), 10) as OrderDateCalc, dense_rank() over(order by OrderDateCalc desc) as xz
from qdfOrdersProducts) a
pivot (max(OrderDateCalc) for xz in ([1], [2], [3], ..., [30])) pvt

union all

select Товар, [1], [2], [3], ..., [30]
from
(select qdfOrdersProducts.ProductCalc as Товар, cast(SUM((SalePrice - qdfArrivalsProducts.Price) * qdfOrdersProducts.Quantity) as varchar) as Доход, dense_rank() over(order by qdfOrdersProducts.OrderDateCalc desc) as xz
from qdfOrdersProducts
inner join qdfArrivalsProducts  on  qdfOrdersProducts.ProductID = qdfArrivalsProducts.ProductID 
inner join qdfOrders on qdfOrdersProducts.OrderID = qdfOrders.ID
group by qdfOrdersProducts.ProductCalc, qdfOrdersProducts.OrderDateCalc) a
pivot (max(Доход) for xz in ([1], [2], [3], ..., [30])) pvt

order by 1
6 окт 12, 00:20    [13277031]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
qwerty112,

при создании представления вот
http://s42.radikal.ru/i095/1210/2c/17f61ac56d4b.png
6 окт 12, 00:38    [13277071]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
qwerty112,

Сообщение 102, уровень 15, состояние 1, процедура Haba_Haba, строка 3
Неправильный синтаксис около конструкции ",".
Сообщение 102, уровень 15, состояние 1, процедура Haba_Haba, строка 6
Неправильный синтаксис около конструкции "a".
Сообщение 102, уровень 15, состояние 1, процедура Haba_Haba, строка 11
Неправильный синтаксис около конструкции ",".
Сообщение 102, уровень 15, состояние 1, процедура Haba_Haba, строка 17
Неправильный синтаксис около конструкции "a".
6 окт 12, 00:38    [13277073]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
qwerty112
Guest
Kimel
qwerty112,

при создании представления вот
+
Картинка с другого сайта.

ну ты прикалываешся чтоле ?

это
[1], [2], [3], ..., [30]

обозначает, что тебе нужно лапами вписать недостающие номера
[1], [2], [3], [4], [5], [6], и т.д.
6 окт 12, 00:43    [13277087]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
qwerty112,

СПасибо, но новая ошибка !!!!
Сообщение 1033, уровень 15, состояние 1, процедура Haba_Haba, строка 20
Предложение ORDER BY не допускается в представлениях, встроенных функциях, производных таблицах, вложенных запросах и обобщенных табличных выражениях, если не указано TOP или FOR XML.
6 окт 12, 00:44    [13277092]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
qwerty112
Guest
Kimel
qwerty112,

СПасибо, но новая ошибка !!!!
Сообщение 1033, уровень 15, состояние 1, процедура Haba_Haba, строка 20
Предложение ORDER BY не допускается в представлениях, встроенных функциях, производных таблицах, вложенных запросах и обобщенных табличных выражениях, если не указано TOP или FOR XML.

аа, ну да,
убери эту строку - order by 1
6 окт 12, 00:47    [13277099]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
qwerty112,

Представление работает, но я не понимаю, во первых как оно будет определять период
6 окт 12, 00:49    [13277113]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
qwerty112
Guest
Kimel
qwerty112,

Представление работает, но я не понимаю, во первых как оно будет определять период

13276814
6 окт 12, 00:50    [13277119]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
qwerty112,

всё я больше могу, #цензура# это программа, ЦЕЛЫЕ ПОЛ ГОД НАД НЕЙ ТРУЖУСЬ КАЖДЫЙ ДЕНЬ, но я не могу исправить то что разработчик #цензура#. Она не схавала представление, код тоже не хавает. Посоветуй плиз нормальную прогу, тоже такую что бы всё настраивалось, только что бы КОД НОРМАЛЬНО ИСПОЛНЯЛСЯ
6 окт 12, 00:57    [13277140]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
qwerty112
Guest
Kimel
qwerty112,

всё я больше могу, #цензура# это программа, ЦЕЛЫЕ ПОЛ ГОД НАД НЕЙ ТРУЖУСЬ КАЖДЫЙ ДЕНЬ, но я не могу исправить то что разработчик #цензура#. Она не схавала представление, код тоже не хавает. Посоветуй плиз нормальную прогу, тоже такую что бы всё настраивалось, только что бы КОД НОРМАЛЬНО ИСПОЛНЯЛСЯ

в смысле ?
что, вызов из программы выборки из вью не работает ?
как вызывал, так ?

select * from  dbo.Haba_Haba

?
и что пишет-то - покажи
6 окт 12, 01:00    [13277152]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
qwerty112,

http://s004.radikal.ru/i206/1210/f6/4e95752fbe5d.png
бред выводит
6 окт 12, 01:02    [13277155]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
qwerty112
Guest
Kimel,

посмотрел тут - 13277087 - у тебя жж там не одна база,
а программа настроенна на ту БД где ты создал вьюху ?
6 окт 12, 01:03    [13277157]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
qwerty112
Guest
Kimel
qwerty112,

http://s004.radikal.ru/i206/1210/f6/4e95752fbe5d.png
бред выводит

а как ты вью назвал ?
чё ты вызываеш такое qdfOthet ?
6 окт 12, 01:05    [13277162]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
qwerty112,

Так в том то и дело что всё правильно, она запросы в которых есть ЧТО-ТО КРОМЕ SELECT FROM WHERE UNION очень плохо хавет, а то и ВООБЩЕ как тут не есть
Я уже устал, я не хочу в этом гавне больше работаь, она очень функциональна, и всё в ней гуд, ВСЁ кроме того что она не есть "СЛОЖНЫЙ КОД"
6 окт 12, 01:05    [13277166]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
qwerty112
Guest
Kimel
qwerty112,

Так в том то и дело что всё правильно, она запросы в которых есть ЧТО-ТО КРОМЕ SELECT FROM WHERE UNION очень плохо хавет, а то и ВООБЩЕ как тут не есть
Я уже устал, я не хочу в этом гавне больше работаь, она очень функциональна, и всё в ней гуд, ВСЁ кроме того что она не есть "СЛОЖНЫЙ КОД"

что "всё правильно" ?
что ты вызываеш ?
в вызове вьхи НЕТ сложного кода, он весь спрятан во вью, - ты должен вызвать вью, которое создал, а не что-то другое ...
6 окт 12, 01:08    [13277174]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
qwerty112,

смотри. я взял и создал вьюшку через студию . вот код.
use S4LadIcks12
go
create view dbo.qdfOtchet
as
select null as Товар, [1], [2], [3],[30]
from
(select left(convert(varchar, OrderDateCalc, 120), 10) as OrderDateCalc, dense_rank() over(order by OrderDateCalc desc) as xz
from qdfOrdersProducts) a
pivot (max(OrderDateCalc) for xz in ([1], [2], [3], [30])) pvt

union all

select Товар, [1], [2], [3],  [30]
from
(select qdfOrdersProducts.ProductCalc as Товар, cast(SUM((SalePrice - qdfArrivalsProducts.Price) * qdfOrdersProducts.Quantity) as varchar) as Доход, dense_rank() over(order by qdfOrdersProducts.OrderDateCalc desc) as xz
from qdfOrdersProducts
inner join qdfArrivalsProducts  on  qdfOrdersProducts.ProductID = qdfArrivalsProducts.ProductID 
inner join qdfOrders on qdfOrdersProducts.OrderID = qdfOrders.ID
group by qdfOrdersProducts.ProductCalc, qdfOrdersProducts.OrderDateCalc) a
pivot (max(Доход) for xz in ([1], [2], [3],  [30])) pvt
программными средствами тоже можно создать, но она пишет мне вот что Имя поля товар юзать нельзя то шо оно русское. Окей поменял на англ. Теперь пишет Имя поля varchar НЕЛЬЗЯ юзать потому что это зарезервированное слово . Я так и не понял как исправить это. Я думаю нужно создать вьху программным методом исправляя все ошибки
http://s018.radikal.ru/i523/1210/45/79a1b5bd1b48.png
6 окт 12, 01:15    [13277187]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
qwerty112,

продолбавшись ещё 15 минут я исправил ВСе ошибки, и что в итоге? она вместо того что бы сказать таблица успешно добавлена тупо пишет добавляю и перестаёт .. и так до бесконечности
6 окт 12, 01:28    [13277207]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
qwerty112
Guest
Kimel
...
программными средствами тоже можно создать, но она пишет мне вот что Имя поля товар юзать нельзя то шо оно русское. Окей поменял на англ. Теперь пишет Имя поля varchar НЕЛЬЗЯ юзать потому что это зарезервированное слово . Я так и не понял как исправить это. Я думаю нужно создать вьху программным методом исправляя все ошибки
+
Картинка с другого сайта.

дааа, видно с парсёром при проверке, авторы сильно не "заморачивались" ...

если просто создать эту вью в студии, можно потом её как-то вызвать из программы ? есть там какой-то интерфейс, типа "Запрос к БД", или что-то подобное ?

если нет, попробуй через интерфейс программы создать такое вью
select Товар, [1], [2], [3], [4], [5], [6], [7], [8], [9], [10]
from
(select qdfOrdersProducts.ProductCalc as Товар, SUM((SalePrice - qdfArrivalsProducts.Price) * qdfOrdersProducts.Quantity) as Dohod, dense_rank() over(order by qdfOrdersProducts.OrderDateCalc desc) as xz
from qdfOrdersProducts
inner join qdfArrivalsProducts  on  qdfOrdersProducts.ProductID = qdfArrivalsProducts.ProductID 
inner join qdfOrders on qdfOrdersProducts.OrderID = qdfOrders.ID
group by qdfOrdersProducts.ProductCalc, qdfOrdersProducts.OrderDateCalc) a
pivot (max(Dohod) for xz in ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10])) pvt

вот, без первой части с датами и без UNION

зы
я смотрю, про эти числа в select , ты меня понял ажж 30-ть раз )
6 окт 12, 01:30    [13277208]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
qwerty112,

В этом то прикол что всё что я создаю в студии в программе автоматом появляется, но ОНО нифига не работает, как на том скрине что я прислал наименования и одни единицы.
В общем в студии код гуд, вставил в прогу тупо 0 реакции, щёлкнул over9000 раз и оно выдало интересную ошибку
http://s019.radikal.ru/i633/1210/32/86597033b777.png
6 окт 12, 01:36    [13277214]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
qwerty112,

кстати когда я код в другом куске проги вставляю ошибка тоже другая
http://s017.radikal.ru/i417/1210/aa/b1ba13effef8.png
6 окт 12, 01:40    [13277219]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
qwerty112,

готов поспорить если составить самый банальный пивот запрос оно его не прохавает
6 окт 12, 01:41    [13277220]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
qwerty112
Guest
Kimel
qwerty112,

кстати когда я код в другом куске проги вставляю ошибка тоже другая
http://s017.radikal.ru/i417/1210/aa/b1ba13effef8.png

эта ошибка при создании вью? или при выполнении/вызове ?
6 окт 12, 01:47    [13277232]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
qwerty112,

это при выполнении этого
select Tovar, [1], [2], [3], [4], [5], [6], [7], [8], [9], [10]
from
(select qdfOrdersProducts.ProductCalc as Tovar, SUM((SalePrice - qdfArrivalsProducts.Price) * qdfOrdersProducts.Quantity) as Dohod, dense_rank() over(order by qdfOrdersProducts.OrderDateCalc desc) as xz
from qdfOrdersProducts
inner join qdfArrivalsProducts  on  qdfOrdersProducts.ProductID = qdfArrivalsProducts.ProductID 
inner join qdfOrders on qdfOrdersProducts.OrderID = qdfOrders.ID
group by qdfOrdersProducts.ProductCalc, qdfOrdersProducts.OrderDateCalc) a
pivot (max(Dohod) for xz in ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10])) pvt
кода
Я уже потерял понятие вызова создания и так далее.. Вызова произвольного кода тут нету. Есть такая вещь создать отчёт. Там нужно или представление выбрать или вписать sql код, потом нажимаешь сохранить например в формате excel или html. А создание вьшки опять же тот же самый код вставить нужно и оно скорее всего начинает задавать свойство столбцов.. Но нифига не выходит
6 окт 12, 01:50    [13277238]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
qwerty112,

вот так выглядит ТИПИЧная вьюшка
SELECT qdfProductsHistory.StoreIDCalc, tblStores.Store AS StoreCalc, qdfProductsHistory.ProductID, qdfProductsHistory.ProductCodeCalc, qdfProductsHistory.ProductCalc, qdfProductsHistory.ProductGroupCalc, qdfProductsHistory.ProductFamilyCalc, qdfProductsHistory.ProductTypeCalc, qdfProductsHistory.UnitCalc, SUM(qdfProductsHistory.Quantity) AS QuantitySum, qdfBuyPrices.LastBuyPrice, qdfBuyPrices.AvgBuyPrice FROM qdfProductsHistory LEFT JOIN tblStores ON qdfProductsHistory.StoreIDCalc=tblStores.ID LEFT JOIN qdfBuyPrices ON qdfProductsHistory.ProductID=qdfBuyPrices.ProductID GROUP BY qdfProductsHistory.StoreIDCalc, tblStores.Store, qdfProductsHistory.ProductID, qdfProductsHistory.ProductCodeCalc, qdfProductsHistory.ProductCalc, qdfProductsHistory.ProductGroupCalc, qdfProductsHistory.ProductFamilyCalc, qdfProductsHistory.ProductTypeCalc, qdfProductsHistory.UnitCalc, qdfBuyPrices.LastBuyPrice, qdfBuyPrices.AvgBuyPrice
6 окт 12, 01:51    [13277241]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
qwerty112
Guest
воопщем последняя попытка
1
из своей программы создаёш такое представление
select '1' as Tovar, 1 as [1], 2 as [2], 3 as [3]
from qdfOrdersProducts

2
если создалось, шагаеш в студию,
находиш это новое представление (как ты его назвал),
правая педаль - Script view as - Alter - New window
будет примерно такой код
ALTER VIEW [dbo].[XZ]
AS
select '1' as Tovar, 1 as [1], 2 as [2], 3 as [3]
from qdfOrdersProducts

меняеш на такое
ALTER VIEW [dbo].[XZ]
AS
select Tovar, [1], [2], [3]
from
(select qdfOrdersProducts.ProductCalc as Tovar, SUM((SalePrice - qdfArrivalsProducts.Price) * qdfOrdersProducts.Quantity) as Dohod, dense_rank() over(order by qdfOrdersProducts.OrderDateCalc desc) as xz
from qdfOrdersProducts
inner join qdfArrivalsProducts  on  qdfOrdersProducts.ProductID = qdfArrivalsProducts.ProductID 
inner join qdfOrders on qdfOrdersProducts.OrderID = qdfOrders.ID
group by qdfOrdersProducts.ProductCalc, qdfOrdersProducts.OrderDateCalc) a
pivot (max(Dohod) for xz in ([1], [2], [3])) pvt

в студии - жмёш выполнить
3
шагаеш обратно в свою программу,
и пробуеш вызвать этот отчёт
6 окт 12, 01:57    [13277254]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
qwerty112,

Не создаёться. Пишет имя поля 1 НЕ является доступным так как ОНО ЧИСЛО
6 окт 12, 02:00    [13277263]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
qwerty112
Guest
Kimel
qwerty112,

Не создаёться. Пишет имя поля 1 НЕ является доступным так как ОНО ЧИСЛО

ok, изменил

qwerty112
воопщем последняя попытка
1
из своей программы создаёш такое представление
select '1' as Tovar, 1 as [a1], 2 as [a2], 3 as [a3]
from qdfOrdersProducts

2
если создалось, шагаеш в студию,
находиш это новое представление (как ты его назвал),
правая педаль - Script view as - Alter - New window
будет примерно такой код
ALTER VIEW [dbo].[XZ]
AS
select '1' as Tovar, 1 as [a1], 2 as [a2], 3 as [a3]
from qdfOrdersProducts

меняеш на такое
ALTER VIEW [dbo].[XZ]
AS
select Tovar, [1] as [a1], [2]  as [a2], [3] as [a3]
from
(select qdfOrdersProducts.ProductCalc as Tovar, SUM((SalePrice - qdfArrivalsProducts.Price) * qdfOrdersProducts.Quantity) as Dohod, dense_rank() over(order by qdfOrdersProducts.OrderDateCalc desc) as xz
from qdfOrdersProducts
inner join qdfArrivalsProducts  on  qdfOrdersProducts.ProductID = qdfArrivalsProducts.ProductID 
inner join qdfOrders on qdfOrdersProducts.OrderID = qdfOrders.ID
group by qdfOrdersProducts.ProductCalc, qdfOrdersProducts.OrderDateCalc) a
pivot (max(Dohod) for xz in ([1], [2], [3])) pvt

в студии - жмёш выполнить
3
шагаеш обратно в свою программу,
и пробуеш вызвать этот отчёт
6 окт 12, 02:04    [13277269]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
qwerty112,

я понял твою идею, создать надо представление такое несложно что бы прога создала конфу для столбцов, и вроде всё было ок, но когда зменил вконце, ну последний шаг кода, то всё как раньше. http://s018.radikal.ru/i500/1210/78/80c35e3b58a2.png

Там не просто нету названия столбцов. СТолбоцов ВООБЩе нету. это такая видимость что они есть, глюк...
6 окт 12, 02:11    [13277279]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
qwerty112
Guest
Kimel
qwerty112,

я понял твою идею, создать надо представление такое несложно что бы прога создала конфу для столбцов, и вроде всё было ок, но когда зменил вконце, ну последний шаг кода, то всё как раньше. http://s018.radikal.ru/i500/1210/78/80c35e3b58a2.png

Там не просто нету названия столбцов. СТолбоцов ВООБЩе нету. это такая видимость что они есть, глюк...

а если после 1-го пункта (из своей программы создаёш такое представление) вызвать отчет - то как ? открывается отчет ? есть все поля ?
6 окт 12, 02:15    [13277282]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
qwerty112,

да всё работает, там одни еденицы, НО поля есть и они работают
6 окт 12, 02:16    [13277283]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
Не знаю в чём дело, послушай, попробуй скачать эту прогу, она 6мб весит всего. Там установка 5 мин. Мб у меня проблемы с компом, я не знаю в чём дело.. http://www.simple-soft.ru/ProductsCount.htm
6 окт 12, 02:32    [13277295]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
qwerty112
Guest
Kimel,

так попробуй ещё
select qdfOrdersProducts.ProductCalc as Tovar, 
SUM(case when datediff(d,qdfOrdersProducts.OrderDateCalc,getdate())=0 then  (SalePrice-qdfArrivalsProducts.Price)*qdfOrdersProducts.Quantity else 0 end) as d0,
SUM(case when datediff(d,qdfOrdersProducts.OrderDateCalc,getdate())=1 then  (SalePrice-qdfArrivalsProducts.Price)*qdfOrdersProducts.Quantity else 0 end) as d1,
SUM(case when datediff(d,qdfOrdersProducts.OrderDateCalc,getdate())=2 then  (SalePrice-qdfArrivalsProducts.Price)*qdfOrdersProducts.Quantity else 0 end) as d2,
SUM(case when datediff(d,qdfOrdersProducts.OrderDateCalc,getdate())=3 then  (SalePrice-qdfArrivalsProducts.Price)*qdfOrdersProducts.Quantity else 0 end) as d3,
SUM(case when datediff(d,qdfOrdersProducts.OrderDateCalc,getdate())=4 then  (SalePrice-qdfArrivalsProducts.Price)*qdfOrdersProducts.Quantity else 0 end) as d4,
SUM(case when datediff(d,qdfOrdersProducts.OrderDateCalc,getdate())=5 then  (SalePrice-qdfArrivalsProducts.Price)*qdfOrdersProducts.Quantity else 0 end) as d5,
SUM(case when datediff(d,qdfOrdersProducts.OrderDateCalc,getdate())=6 then  (SalePrice-qdfArrivalsProducts.Price)*qdfOrdersProducts.Quantity else 0 end) as d6,
SUM(case when datediff(d,qdfOrdersProducts.OrderDateCalc,getdate())=7 then  (SalePrice-qdfArrivalsProducts.Price)*qdfOrdersProducts.Quantity else 0 end) as d7,
SUM(case when datediff(d,qdfOrdersProducts.OrderDateCalc,getdate())=8 then  (SalePrice-qdfArrivalsProducts.Price)*qdfOrdersProducts.Quantity else 0 end) as d8,
SUM(case when datediff(d,qdfOrdersProducts.OrderDateCalc,getdate())=9 then  (SalePrice-qdfArrivalsProducts.Price)*qdfOrdersProducts.Quantity else 0 end) as d9
from qdfOrdersProducts
inner join qdfArrivalsProducts  on  qdfOrdersProducts.ProductID = qdfArrivalsProducts.ProductID 
inner join qdfOrders on qdfOrdersProducts.OrderID = qdfOrders.ID
group by qdfOrdersProducts.ProductCalc, qdfOrdersProducts.OrderDateCalc
6 окт 12, 11:25    [13277422]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
qwerty112,

представление создалось, вот результат который даёт программа
Картинка с другого сайта.
6 окт 12, 14:28    [13277621]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
qwerty112,

В одно место это программу. В студии всё гуд. Не перетржусть если раз в месяц зайду в студию и отчёт сделаю. Но вот такая незадача. Вот код.
declare @SQL1 varchar(max)
declare @SQL varchar(max)
set @SQL1 = 
(select distinct 
	'[' + left(convert(varchar, Дата, 120), 10) + '],' as 'data()' 
from (select  qdfOrdersProducts.ProductCalc as Товар,SUM((SalePrice - qdfArrivalsProducts.Price) * qdfOrdersProducts.Quantity) as Прибыль,
OrderDateCalc as Дата from qdfOrdersProducts
 left outer join qdfArrivalsProducts  on  qdfOrdersProducts.ProductID = qdfArrivalsProducts.ProductID 
 left outer join qdfOrders on qdfOrdersProducts.OrderID = qdfOrders.ID 
 where qdfOrdersProducts.OrderDateCalc >= 
 (select top 1 qdfArrivalsProducts.DocumentDateCalc 
 from qdfArrivalsProducts where ProductID = qdfOrdersProducts.ProductID order by DocumentDateCalc desc ) 
group by qdfOrdersProducts.ProductCalc,OrderDateCalc) t
for xml path(''))
set @SQL1 = left(@SQL1, len(@SQL1)-1)
set @SQL = 
'SELECT Товар, ' + @SQL1 + '
from
(select Товар, left(convert(varchar, Дата, 120), 10) as xz, Прибыль
from (select  qdfOrdersProducts.ProductCalc as Товар,SUM((SalePrice - qdfArrivalsProducts.Price) * qdfOrdersProducts.Quantity) as Прибыль,
OrderDateCalc as Дата from qdfOrdersProducts
 left outer join qdfArrivalsProducts  on  qdfOrdersProducts.ProductID = qdfArrivalsProducts.ProductID 
 left outer join qdfOrders on qdfOrdersProducts.OrderID = qdfOrders.ID 
 where qdfOrdersProducts.OrderDateCalc >= 
 (select top 1 qdfArrivalsProducts.DocumentDateCalc 
 from qdfArrivalsProducts where ProductID = qdfOrdersProducts.ProductID order by DocumentDateCalc desc ) 
group by qdfOrdersProducts.ProductCalc,OrderDateCalc) t) a
pivot (sum(Прибыль) for xz in (' + @SQL1 + ')) pvt'
exec(@SQL)


Он работает идеально. Как сделать так что бы он экспортировал с заголовками в csv файл? ну то есть что бы не я сам, а оно само экспортировало?
6 окт 12, 14:38    [13277626]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
qwerty112
Guest
Kimel
Он работает идеально. Как сделать так что бы он экспортировал с заголовками в csv файл? ну то есть что бы не я сам, а оно само экспортировало?

"он" работает, только потому, что у тебя немного дат
когда их будет много - он работать перестанет

тебе нужно на основе этого скрипта написать хранимую процедуру с параметрами (или диапазон дат - датаС - датаПо, или Год+месяц)
и в ХП не просто запихнуть этот скрипт, а переписать его по-уму - убрать эти внешние соединения, неизвестно откуда "высосаные",
использовать таблицы, а не никому не ясные вьюхи (qdfOrdersProducts, qdfOrders - это же вьюхи ?)

после этого, - написать вбс-скрипт, который будет вызывать эту ХП и экспортировать результат в цсв
там нет ничего сложного, но с этим вопросом уже в форум ВБ
6 окт 12, 15:15    [13277668]     Ответить | Цитировать Сообщить модератору
 Re: Нужно перевести строки в названия стобцов  [new]
Kimel
Member

Откуда: Украина
Сообщений: 334
qwerty112,

Это для меня слишком сложно(
Я думал можн о в запрос добавить что-то типа output into "C://blablas.csv" и всё, а запрос запускать не со студии, а из какой-то программки галимой и всё
6 окт 12, 15:49    [13277697]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: 1 2 3      [все]
Все форумы / Microsoft SQL Server Ответить