Jump to content

MSSQL, pagriezt tabulu


versatile
 Share

Recommended Posts

Nepieciešama neliela palīdzība. Iespējams, risinājums triviāls, bet esmu iestrēdzis un gribu iet gulēt :D

ir view, kas atgriež datus sekojošā formā:

image.png.ca1e9dd9da4a0e25ab0622cb88516cea.png

Un man nepieciešams dabūt rezultātu šādā formā:

image.thumb.png.bd42db1ee10070e0b00cd5ff0fd49d85.png

Kāds būtu sakarīgākais veids to realizēt? Negribas taisīt zvērīgu rekursiju, čujs saka, ka jābūt kādam nebūt elegantam veidam.

 

Ja tas ko maina (ir čujs, ka maina gan), parametru nosaukumi ir zināmi un stingri fiksēti, nekādas izmaiņas tajos nenotiek.

Problēma tāda, ka ir cits view, kas atgriež dažus desmitus tūkstošu rindu ar klienta transakcijām, un katrai rindai galā nepieciešams piekabināt šī klienta (un arī kopējos, bet parametrs1 klientam a + parametrs1 klientam b nav vienāds ar parametrs 1 visiem klientiem kopā) parametrus konkrētajā mēnesī, tādā formā, kā redzams otrajā bildē.

Labots - versatile
Link to comment
Share on other sites

Klasisks OLAP. Vienkāršākais un pieejamais veids-  excel Pivot Table ja nav miljoniem ierakstu.

pirms 4 stundām , versatile teica:

Iespējams, risinājums triviāls

Link to comment
Share on other sites

versatile

Datu attēlošanai jā, uz excel caur pivot nav problēmu.

Man tos divus view'us vajag sakombinēt trešajā un iebarot vienam BI rīkam, kur ievaddatu formāts ir stingri definēts.

Also, strādāju es uz diezgan attālas sistēmas dev versijas, uz dzīvo pārnes citi cilvēki, neko diži vairāk par selectiem es izmantot nevaru.

 

Labots - versatile
Link to comment
Share on other sites

Tikai pivot ir tāda problēma, ka tās kolonas vajag definēt. nevar uztaisīt, lai taisa dinamisko pēc 'Parametrs'.

Link to comment
Share on other sites

Ja parametri ir fiksēt, tad storētā procedūra. 

pirms 8 stundām , versatile teica:

neko diži vairāk par selectiem es izmantot nevaru.

Tīri ar selectiem grūti iedomāties, kā kaut ko tamlīdzīgu dabūt gatavu, kaut gan..... 

 

Select (select sum(vertiba) from dati where parametrs = 'parametrs1' ) as Parametrs1, (select sum(vertiba) from dati where parametrs = 'parametrs2' ) as Parametrs2,  utt, utjp...

Bet nu tas tā - stipri čerež ž.... ;) 

 

 

pirms 8 stundām , DjUbuntu teica:

 SQL serverim arī ir PIVOT klauza.

 

Jā! Šis varētu būt īstais!

https://docs.microsoft.com/en-us/sql/t-sql/queries/from-using-pivot-and-unpivot?view=sql-server-2017

 

Link to comment
Share on other sites

Just now, _dunduks_ teica:

case when then else end neder?

Kā tu šeit case pielietot domā? 

Link to comment
Share on other sites

_dunduks_

sum(case when paramaters=parametrs1 then vertiba else 0 end) as Parametrs1

group by gads, menisis, klienta_tips

 

...vai arī es nesapratu uzdevumu

Labots - _dunduks_
  • Atbalstu 1
Link to comment
Share on other sites

Pirms 10 minūtēm , _dunduks_ teica:

sum(case when paramaters=parametrs1 then vertiba else 0 end) as Parametrs1

group by gads, menisis, klienta_tips

 

hmm.... Moš arī sanāks... 

Link to comment
Share on other sites

versatile

Dunduks trāpīja par visiem 100, tieši šito es vakarnakt mēģināju izštukot. Works like a charm!

Link to comment
Share on other sites

Bet kas tev par Bi rīku, ka jātaisa caur melno dirku, lai padotu datus. Tur no Bi kā pelmeņos ir gaļa

Labots - Murlo
Link to comment
Share on other sites

versatile
Pirms 4 minūtēm , Murlo teica:

Bet kas tev par Bi rīku, ka jātaisa caur melno dirku, lai padotu datus. Tur no Bi kā pelmeņos ir gaļa

oj. Esmu pārāk skaidrā, lai par to runātu.
Projekts gana komplicēts, dīlo ar daudzu valstu atšķirigiem uzskatiem par to, kā veicama uzskaite, kā arī dažādām ERP sistēmām.
Konkrētajā gadījumā ir paliels info vakuums un par konkrēto valsti/uzņēmumu praktiski visu esam reverse-engineerojuši. Tā ka jāpriecājas, ka ir pat tā melnā dirka.

Labots - versatile
Link to comment
Share on other sites

Izveido kontu, vai pieraksties esošajā, lai komentētu

Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas

Izveidot jaunu kontu

Piereģistrējies un izveido jaunu kontu, tas būs viegli!

Reģistrēt jaunu kontu

Pierakstīties

Jums jau ir konts? Pierakstieties tajā šeit!

Pierakstīties tagad!
 Share

×
×
  • Izveidot jaunu...