Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3]      все
 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]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: Ctrl  назад   1 2 [3]      все
Все форумы / Microsoft SQL Server Ответить