Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Pivot или что не будь еще? Help / 6 сообщений из 6, страница 1 из 1
09.10.2012, 11:35
    #37989649
Regata
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot или что не будь еще? Help
Добрый день всем
имеется токая проблема

Items
------
ID : autoinc
Name : nvarchar(50)
...

Stock
-------
ID : autoinc
Date : date
Customer : int
Item : int (look up с таблицы Items)
Amount : int
...

В таблице ITEMS имеется 150 наименований
Хотел сделать такой Pivot

Код: plaintext
1.
2.
3.
4.
5.
Sum(Amount)  |  Customer
-------------|-----------------------------------------
Item         |
             |
             |
На пример
на дату 10-10-2012 выход со склада

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
           | Customer1  | Customer2  | Customer3 
-----------|------------|------------|------------------- …
Item1      |     10     |            |     15
-----------|------------|------------|------------------- …
Item2      |            |     60     |     40
-----------|------------|------------|------------------- …
Item3      |     15     |            |
-----------|------------|------------|------------------- …
Item4      |     25     |            |
-----------|------------|------------|------------------- …
…

Т.е чтоб все 150 наименований были в таблице вне зависимости был выход или нет. а кастюмеры зависимости от даты. А если точнее меняется только количество столбцов. был сегодня выход со склада на этого кастюмера то он появляется в столбце если нет то нет. (примерно как excel т.е заранее подготовлен шаблон и юзер заполняет клетки ). Вроде бы все

Пробовал через Pivot это не решило проблему. Т.е не смог вывести все итемы с таблицы Итемс да и заране не известен кол-во кастюмеров. И код получился страшный стыдно даже поделится

Пока все. Остальное надо подумать как правильнее выразится
...
Рейтинг: 0 / 0
09.10.2012, 12:04
    #37989755
Максим Н
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot или что не будь еще? Help
Regata,

Показывайте код
...
Рейтинг: 0 / 0
09.10.2012, 13:16
    #37989950
Regata
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot или что не будь еще? Help
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
select
        item,
	[1],
	[2],
	[3],
	[4],
	[5],
	[6],
	[7],
	[8],
	[10],
	[11],
	[12],
	[13],
	[14],
	[15],
	[16],
	[64],
	[179]

from
	stock

PIVOT (
SUM(amount)
for customer
in ([1], [2], [3], [4], [5], [6], [7], [8], [10], [11], [12], [13], [14], [15], [16], [64], [179])
) as pvt

where date = CONVERT(date,GETDATE())
order by item



цифры это айди кастюмеров. как видите пивот выводит только те итемы на которых был выход на на тот день.

таблица ITEMS

IDNAME1ITEM12ITEM23ITEM34ITEM45ITEM56ITEM67ITEM78ITEM89ITEM910ITEM1011ITEM1112ITEM1213ITEM1314ITEM1415ITEM15

таблица STOCK

ID Date Customer Item Amount1 12.09.2012 c1 5 1002 13.09.2012 c2 2 1503 13.09.2012 c2 3 154 13.09.2012 c2 1 405 13.09.2012 c1 12 606 13.09.2012 c1 15 107 14.09.2012 c1 15 1008 14.09.2012 c2 2 509 14.09.2012 c3 6 1810 15.09.2012 c3 4 21

хотел такой PIVOT

C1 C2ITEM1 40ITEM2 150ITEM3 15ITEM4 ITEM5 ITEM6 ITEM7 ITEM8 ITEM9 ITEM10 ITEM11 ITEM12 60 ITEM13 ITEM14 ITEM15 10

а пока получается такой

C1 C2 C3ITEM1 40 ITEM2 150 ITEM3 15 ITEM12 60 ITEM15 10
...
Рейтинг: 0 / 0
09.10.2012, 13:20
    #37989957
Regata
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot или что не будь еще? Help
уточнение в данном случае выборка по дате 13-09-2012
...
Рейтинг: 0 / 0
09.10.2012, 13:36
    #37989975
Regata
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot или что не будь еще? Help
решил часть проблемы
мое решение части проблемы
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
select i.name,db.* FROM ITEMS i
left join
(
select
    item,
	[1],
	[2],
	[3],
	[4],
	[5],
	[6],
	[7],
	[8],
	[10],
	[11],
	[12],
	[13],
	[14],
	[15],
	[16],
	[64],
	[179]

from
	stock

PIVOT (
SUM(amount)
for customer
in ([1], [2], [3], [4], [5], [6], [7], [8], [10], [11], [12], [13], [14], [15], [16], [64], [179])
) as pvt

where date = CONVERT(date,GETDATE())
) db on i.id = db.item
ORDER by i.ID



вот теперь решить бы как убрать лишние кастюмеры
...
Рейтинг: 0 / 0
09.10.2012, 13:51
    #37989996
Regata
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Pivot или что не будь еще? Help
ОШИБСЯ НЕ РЕШИЛ
...
Рейтинг: 0 / 0
Форумы / Проектирование БД [игнор отключен] [закрыт для гостей] / Pivot или что не будь еще? Help / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]