SQL oszlop másolás

SQL oszlop másolás
2014-02-14T10:33:31+01:00
2014-02-14T17:58:59+01:00
2022-11-30T13:15:42+01:00
vinics
Probléma: van egy táblám az sql serveren. Létrehoztam egy új táblát, amibe az eredeti táblából számított adatokat kellene beletennem, úgy hogy az adatok egy más mellett jelenjenek meg oszloposan (minden oszlopba 40 adat van). Szóval januári adatok a január oszlopba a februári a februáriba ... decemberig. A új táblám első 8 oszlopa már ki van töltve és onnan jön a január, február ... december.
Én úgy gondoltam a megoldást, hogy készítek egy "segéd" táblát, amibe először kiszámolom pl. januári értékeket és ebből a táblából fogom átmásolni az új táblába az adatokat. Ugyan ezt megcsináltam februárral is be is teszi az új táblába de azt a január alá teszi, viszont jó helyre. Hogyan lehet azt megoldani hogy az is a oszlop tetejéről induljon?
Segítséget előre is köszönöm.
Mutasd a teljes hozzászólást!
Mert ebbe kellene megcsinálni, és ha az adatok előállnak jelentéseket kellene csinálni belőle.

És a jelentéseket nem lehet megcsinálni Excelben? Vagy ez egy ismétlődő dolog lesz, amit most akarsz automatizálni?

Akkor kérdezek én is hülyeséget. Akkor hogy kellene nekiállnom hogy kellene gondolkodnom. Egyáltalán meg lehet csinálni hogy a két oszlop adatai egymás mellett jelenjenek meg?

Először is úgy, hogy elfelejtkezel a sorokról és az oszlopokról. Igaz, hogy így szokás emlegetni őket konyhanyelven, de igazából rekordokról, és a rekordok tulajdonságairól van szó. Tehát: mik az eredeti rekordok, és mik nekik a tulajdonságaik? Ezekből a tulajdonságokból mit, és mi alapján kell aggregálni (összeadni, átlagolni stb.)?

(Arról is felejtkezz el egy kicsit, hogy mi van "egymás mellett". Amikor egy tábla adatait táblázatos formában írod ki, egy rekordnak a különböző tulajdonságai kerülnek egymás mellé, de nem erre alapozzuk az adatmodellt.)

A kimenetedben pedig ne fogalmazz meg olyan igényeket, hogy "minden hónap külön oszlopba kerüljön", mert ennek nincs sok értelme modellezési szempontból. Annak van értelme, hogy pl. "kérem havi bontásban az eladások számát", ahol minden eredmény sornak három tulajdonsága lesz: az év, a hónap és az eladások számának összege. Az, hogy ezt te táblázatos formában nem így szeretnéd látni, már nem az adatbázis problémája, hanem neked kell valahogy megoldani.
Mutasd a teljes hozzászólást!

  • Bocsi, de ilyen témánál érdemes az adott select-eket, update-ket is bemutatni.
    Nékem az a gyanúm (de csak gyanúm), hogy nincs megfelelő azonosítás (pl. ID = IDS) a két tábla között, de ezt csak az adott update igazolhatná ill. cáfolhatná.
    Mutasd a teljes hozzászólást!
  • ha fel tudnám tölteni az adatbázist megmutatnám hogy van kapcsolat a két tábla között
    Mutasd a teljes hozzászólást!
    Csatolt állomány
  • Szerintem első körben azt kellene megtanulnod, mi a különbség egy relációs adattábla (mint pl. egy Access tábla) és egy Excel táblázat között. Segítségként: ha egy relációs táblában olyan oszlop van, hogy "2010 január" (és gondolom ennek folyományaként minden hónapban bele kell szúrni egy új oszlopot), akkor már régen rossz. Sokkal jobban járnál azzal, ha minden "igazi" sornak lenne egy időbélyege, és a havi/évi aggregációt ez alapján végeznéd megfelelő aggregációs függvények (sum, avg, min, max, stb) illetve group by segítségével.
    Mutasd a teljes hozzászólást!
  • Ahol a 2010 január van azaz adat táblám. Azzal mi a baj azt nem bántjuk. arra csak a lekérdezésbe hivatkozni kell nem? Az alatt mit értesz hogy igazi sornak időbélyege legyen? A kapott értékeim jók csak a hónapokat nem külön táblákba kellene létrehoznom, hanem egy egy táblába.
    Mutasd a teljes hozzászólást!
  • Ahol a 2010 január van azaz adat táblám. Azzal mi a baj azt nem bántjuk.

    Pedig baj van vele, ha ilyen oszlop szerepel benne. Egy tisztességesen megtervezett adatbázis-sémát nem kell folyton (havonta, évente) változtatni csak azért, hogy az új adatokat el lehessen tárolni benne.

    Az alatt mit értesz hogy igazi sornak időbélyege legyen?

    Gondolom valahol van egy eredeti adatforrásod, amit már ügyetlenül próbáltál aggregálni, és ebből keletkeztek ezek a "2010 január" stílusú oszlopok. Na azt az adatforrást kéne rendesen modellezni, beleértve egy időbélyeg oszlopot, ami az adathoz tartozó időpontot jelzi, és később már ez alapján lehetne aggregáló nézeteket definiálni.

    Az, hogy ilyeneket írsz, hogy "az oszlop tetejéről kezdődjön" valami, nekem azt sugallja, hogy Excel táblázatként gondolsz a tábláidra. Egy relációs táblának nincs teteje és alja, merthogy a sorok sorrendje nem rögzített. A rekordoknak (=soroknak) van azonosítója, és nagyon nem mindegy, hogy egy meglevő rekord valamelyik mezejét frissíted (UPDATE utasítás), vagy új rekordot viszel fel (INSERT).
    Mutasd a teljes hozzászólást!
  • A Capex tábla az eredeti tábla, csak le van szűrve az üres sorokat kivettem. Importálni még tudok.
    Igen Excelbe gondolkodok mert ezeket, ha Excelbe kellene megcsinálni kb 10 percet venne igénybe. A számításokat elvégzem egy új munkalapon és kész.
    Az UPDATE utasítás azért nem jó mert nem javítani akarom a adatokat, hanem egy új oszlopba szeretném beilleszteni, úgy hogy a 5214 és a 5714 egy sorba legyen. Az INSERT INTO lenne jó csak az meg nem teszi a két adatot egymás mellé ahogy az utolsó képen is láthatod. és én erre keresnék megoldást.
    Mutasd a teljes hozzászólást!
  • OK, feladom. Láthatóan nem szeretnéd megérteni, hogy miért rossz az egész elképzelésed, és hogy miért nem így kell ezt megcsinálni relációs alapokon.

    De van még egy utolsó "hülye" kérdésem: ha Excelben 10 perc lenne, akkor miért nem csinálod Excelben? Ha az Excelt tudod, az Accesst meg nem szeretnéd rendesen megtanulni, akkor miért erőlködsz az Access-szel?
    Mutasd a teljes hozzászólást!
  • Mert ebbe kellene megcsinálni, és ha az adatok előállnak jelentéseket kellene csinálni belőle.
    Akkor kérdezek én is hülyeséget. Akkor hogy kellene nekiállnom hogy kellene gondolkodnom. Egyáltalán meg lehet csinálni hogy a két oszlop adatai egymás mellett jelenjenek meg?
    Mutasd a teljes hozzászólást!
  • Mert ebbe kellene megcsinálni, és ha az adatok előállnak jelentéseket kellene csinálni belőle.

    És a jelentéseket nem lehet megcsinálni Excelben? Vagy ez egy ismétlődő dolog lesz, amit most akarsz automatizálni?

    Akkor kérdezek én is hülyeséget. Akkor hogy kellene nekiállnom hogy kellene gondolkodnom. Egyáltalán meg lehet csinálni hogy a két oszlop adatai egymás mellett jelenjenek meg?

    Először is úgy, hogy elfelejtkezel a sorokról és az oszlopokról. Igaz, hogy így szokás emlegetni őket konyhanyelven, de igazából rekordokról, és a rekordok tulajdonságairól van szó. Tehát: mik az eredeti rekordok, és mik nekik a tulajdonságaik? Ezekből a tulajdonságokból mit, és mi alapján kell aggregálni (összeadni, átlagolni stb.)?

    (Arról is felejtkezz el egy kicsit, hogy mi van "egymás mellett". Amikor egy tábla adatait táblázatos formában írod ki, egy rekordnak a különböző tulajdonságai kerülnek egymás mellé, de nem erre alapozzuk az adatmodellt.)

    A kimenetedben pedig ne fogalmazz meg olyan igényeket, hogy "minden hónap külön oszlopba kerüljön", mert ennek nincs sok értelme modellezési szempontból. Annak van értelme, hogy pl. "kérem havi bontásban az eladások számát", ahol minden eredmény sornak három tulajdonsága lesz: az év, a hónap és az eladások számának összege. Az, hogy ezt te táblázatos formában nem így szeretnéd látni, már nem az adatbázis problémája, hanem neked kell valahogy megoldani.
    Mutasd a teljes hozzászólást!
  • ha fel tudnám tölteni az adatbázist megmutatnám hogy van kapcsolat a két tábla között

    Bocsi, de mi az akadálya?
    Csatolhatod tömörítve is (rar/zip/stb).

    Ám ha titkosak az adatok akkor kreálj egy teszt példányt, s azt vésd ide.
    Így tán érthetőbb lesz a problémád, s könnyebben kaphatsz segítséget a megoldásához.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd