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

Откуда:
Сообщений: 261
Ребят, всем доброго дня.
Работала я себе спокойно с кейсами, а тут сказали сделать тоже самое с PIVOT.
Есть у меня таблица в которой есть ключевое поле SampleID, поле NAME , где хранятся виртуальные столбцы и поле VALUE, где значения этих столбцов. Чтобы увидеть эту таблицу в нормальном виде, я писала так:
(CASE when [CORPSAMPLEASSAY_N].[NAME] = 'Ag_MA-UT_ppm' then [CORPSAMPLEASSAY_N].[VALUE] ELSE NULL END) as [Ag_MA_UT_ppm]


Пытаюсь уже четвертый час разобраться с PIVOT, но он выдает пустые значения. А они есть!
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  


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


Кажется у меня кривые руки...
11 май 18, 14:02    [21403061]     Ответить | Цитировать Сообщить модератору
 Re: PIVOT или CASE  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1172
katish444,

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

а вот так должно работать:
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  
11 май 18, 14:12    [21403097]     Ответить | Цитировать Сообщить модератору
 Re: PIVOT или CASE  [new]
шК0ДЕР
Member

Откуда: Издалека долго
Сообщений: 1209
katish444, у меня ваш код работает. Единственное, исправьте
from @CORPSAMPLEASSAY
11 май 18, 14:13    [21403103]     Ответить | Цитировать Сообщить модератору
 Re: PIVOT или CASE  [new]
katish444
Member

Откуда:
Сообщений: 261
felix_ff, у меня таблица не временная, а реальная, я просто для форума @ добавила

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

Выдает данные как на картинке

К сообщению приложен файл. Размер - 92Kb
11 май 18, 14:26    [21403147]     Ответить | Цитировать Сообщить модератору
 Re: PIVOT или CASE  [new]
katish444
Member

Откуда:
Сообщений: 261
шК0ДЕР, а по запросу
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 

Выдает сплошные нули...

К сообщению приложен файл. Размер - 15Kb
11 май 18, 14:27    [21403151]     Ответить | Цитировать Сообщить модератору
 Re: PIVOT или CASE  [new]
Посетитель
Member

Откуда:
Сообщений: 1384
katish444,

а Вы внимательно присмотритесь, везде ли у Вас корректно указаны подчеркивания и тире?
11 май 18, 14:29    [21403157]     Ответить | Цитировать Сообщить модератору
 Re: PIVOT или CASE  [new]
Konst_One
Member

Откуда:
Сообщений: 11512
никогда не понимал необходимости использования PIVOT на сервере, чем вам OLAP/BI то не угодил? или вообще через Excel PIvot напрямую к серверу соединяйтесь и крутите сови данные как хотите
11 май 18, 14:29    [21403158]     Ответить | Цитировать Сообщить модератору
 Re: PIVOT или CASE  [new]
katish444
Member

Откуда:
Сообщений: 261
Konst_One,
это необходимо для работы в Juputer через Anaconda
Для дальнейшей обработки данных
11 май 18, 14:31    [21403164]     Ответить | Цитировать Сообщить модератору
 Re: PIVOT или CASE  [new]
Konst_One
Member

Откуда:
Сообщений: 11512
ваша анаконда к нормальному кубу может подключаться?
11 май 18, 14:32    [21403166]     Ответить | Цитировать Сообщить модератору
 Re: PIVOT или CASE  [new]
Konst_One
Member

Откуда:
Сообщений: 11512
настраивайте свою анаконду на SSAS через IIS пакет
https://pypi.org/project/xmla/
11 май 18, 14:38    [21403193]     Ответить | Цитировать Сообщить модератору
 Re: PIVOT или CASE  [new]
Konst_One
Member

Откуда:
Сообщений: 11512
и вот ещё гайд https://github.com/akavalar/SSAS-on-a-shoestring
11 май 18, 14:40    [21403198]     Ответить | Цитировать Сообщить модератору
 Re: PIVOT или CASE  [new]
felix_ff
Member

Откуда: Moscow
Сообщений: 1172
katish444,

katish444,

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

+

но вам правильно подсказывают крутить наборы удобнее в других средах нежели в sql
11 май 18, 14:51    [21403250]     Ответить | Цитировать Сообщить модератору
 Re: PIVOT или CASE  [new]
katish444
Member

Откуда:
Сообщений: 261
Konst_One, спасибо большое
14 май 18, 06:23    [21406980]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить