Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / PIVOT или CASE / 13 сообщений из 13, страница 1 из 1
11.05.2018, 14:02
    #39643261
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PIVOT или CASE
Ребят, всем доброго дня.
Работала я себе спокойно с кейсами, а тут сказали сделать тоже самое с PIVOT.
Есть у меня таблица в которой есть ключевое поле SampleID, поле NAME , где хранятся виртуальные столбцы и поле VALUE, где значения этих столбцов. Чтобы увидеть эту таблицу в нормальном виде, я писала так:
Код: sql
1.
(CASE when [CORPSAMPLEASSAY_N].[NAME] = 'Ag_MA-UT_ppm' then [CORPSAMPLEASSAY_N].[VALUE] ELSE NULL END) as [Ag_MA_UT_ppm]



Пытаюсь уже четвертый час разобраться с PIVOT, но он выдает пустые значения. А они есть!
Код: sql
1.
2.
3.
4.
declare  @CORPSAMPLEASSAY  table (sampleid varchar(255),name varchar(20), [value] float)
insert into @CORPSAMPLEASSAY  (sampleid, name,[value]) values ('UZ-001', 'Ag_MA_UT_ppm',0.05)
insert into @CORPSAMPLEASSAY  (sampleid, name,[value]) values ('UZ-001', 'As_MA_UT_ppm',2.05)
insert into @CORPSAMPLEASSAY  (sampleid, name,[value]) values ('UZ-001', 'Al_MA_UT_ppm',25)



Применяю вот так
Код: sql
1.
2.
select sampleid, [Ag_MA_UT_ppm], [Al_MA_UT_ppm], [As_MA_UT_ppm] from (select sampleid, name, value from [CORPSAMPLEASSAY] where sampleid='UZ-001')x
pivot (max(x.value) for name in ([Ag_MA_UT_ppm], [Al_MA_UT_ppm], [As_MA_UT_ppm]))z  



Выдает пустую таблицу.
Подскажите, пожалуйста, в чем моя ошибка? Когда
Код: sql
1.
Select * from @CORPSAMPLEASSAY

, то значения есть


Кажется у меня кривые руки...
...
Рейтинг: 0 / 0
11.05.2018, 14:12
    #39643268
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PIVOT или CASE
katish444,

что то я ничего не понял. у вас вообще компилится не должно если таблицы [CORPSAMPLEASSAY] нет

а вот так должно работать:
Код: sql
1.
2.
3.
4.
5.
6.
7.
declare  @CORPSAMPLEASSAY  table (sampleid varchar(255),name varchar(20), [value] float)
insert into @CORPSAMPLEASSAY  (sampleid, name,[value]) values ('UZ-001', 'Ag_MA_UT_ppm',0.05)
insert into @CORPSAMPLEASSAY  (sampleid, name,[value]) values ('UZ-001', 'As_MA_UT_ppm',2.05)
insert into @CORPSAMPLEASSAY  (sampleid, name,[value]) values ('UZ-001', 'Al_MA_UT_ppm',25)

select sampleid, [Ag_MA_UT_ppm], [Al_MA_UT_ppm], [As_MA_UT_ppm] from (select sampleid, name, value from @CORPSAMPLEASSAY where sampleid='UZ-001')x
pivot (max(x.value) for name in ([Ag_MA_UT_ppm], [Al_MA_UT_ppm], [As_MA_UT_ppm]))z  
...
Рейтинг: 0 / 0
11.05.2018, 14:13
    #39643270
шК0ДЕР
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PIVOT или CASE
katish444, у меня ваш код работает. Единственное, исправьте
Код: sql
1.
from @CORPSAMPLEASSAY
...
Рейтинг: 0 / 0
11.05.2018, 14:26
    #39643275
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PIVOT или CASE
felix_ff, у меня таблица не временная, а реальная, я просто для форума @ добавила

Тогда я вообще в тупике...
По запросу
Код: sql
1.
select * from [CORPSAMPLEASSAY] where [CORPSAMPLEASSAY].sampleid='KZN000107698'


Выдает данные как на картинке
...
Рейтинг: 0 / 0
11.05.2018, 14:27
    #39643276
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PIVOT или CASE
шК0ДЕР, а по запросу
Код: sql
1.
2.
select sampleid, [Ag_MA_UT_ppm], [Al_MA_UT_ppm], [As_MA_UT_ppm] from (select sampleid, name, value from [CORPSAMPLEASSAY] where sampleid='KZN000107698')x
pivot (max(x.value) for name in ([Ag_MA_UT_ppm], [Al_MA_UT_ppm], [As_MA_UT_ppm]))z 


Выдает сплошные нули...
...
Рейтинг: 0 / 0
11.05.2018, 14:29
    #39643277
Посетитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PIVOT или CASE
katish444,

а Вы внимательно присмотритесь, везде ли у Вас корректно указаны подчеркивания и тире?
...
Рейтинг: 0 / 0
11.05.2018, 14:29
    #39643278
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PIVOT или CASE
никогда не понимал необходимости использования PIVOT на сервере, чем вам OLAP/BI то не угодил? или вообще через Excel PIvot напрямую к серверу соединяйтесь и крутите сови данные как хотите
...
Рейтинг: 0 / 0
11.05.2018, 14:31
    #39643280
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PIVOT или CASE
Konst_One,
это необходимо для работы в Juputer через Anaconda
Для дальнейшей обработки данных
...
Рейтинг: 0 / 0
11.05.2018, 14:32
    #39643281
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PIVOT или CASE
ваша анаконда к нормальному кубу может подключаться?
...
Рейтинг: 0 / 0
11.05.2018, 14:38
    #39643284
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PIVOT или CASE
настраивайте свою анаконду на SSAS через IIS пакет
https://pypi.org/project/xmla/
...
Рейтинг: 0 / 0
11.05.2018, 14:40
    #39643286
Konst_One
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PIVOT или CASE
...
Рейтинг: 0 / 0
11.05.2018, 14:51
    #39643295
felix_ff
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PIVOT или CASE
katish444,

katish444,

на вскидку из вашего скрина данных у вас значение колонки [Name] Ag_MA - UT_ppm а не Ag_MA _ UT_ppm


но вам правильно подсказывают крутить наборы удобнее в других средах нежели в sql
...
Рейтинг: 0 / 0
14.05.2018, 06:23
    #39644105
katish444
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
PIVOT или CASE
Konst_One, спасибо большое
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / PIVOT или CASE / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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