Programim dhe zhvillim, javascript, python, php, html

SSRS: Si mund të vazhdoj rreshtat në një kolonë të dytë dhe të shmang humbjen e hapësirës boshe?

Tablix-i im grupohet në një nga kolonat e tij dhe duhet vetëm të nxjerrë një listë të vulave kohore për çdo rresht. Meqenëse vulat kohore janë vetëm dy kolona, ​​kjo lë një hapësirë ​​të tmerrshme të humbur.

Këtu është një model bazë i paraqitjes aktuale...

Struktura aktuale

... dhe kjo është faqosja e dëshiruar:

Shfaqja e dëshiruar

Siç tregohet, raporti do të përshtatej në mënyrë ideale në mënyrë dinamike për të shfaqur gjysmën e rreshtave të një grupi në kolonën e majtë (duke përfshirë rreshtin shtesë nëse është i pabarabartë) dhe rreshtat e mbetur në kolonën e djathtë. A është e mundur kjo me SSRS? Nëse jo siç përshkruhet, a mund të sugjeroni diçka me një rezultat të ngjashëm?


Përgjigjet:


1

Ju mund ta bëni këtë me aq kohë sa të dhënat tuaja mund të përditësohen për ta mbështetur atë.

Së pari mora disa mostra të të dhënave të datës që kisha dhe i futa në një variabël tabele të quajtur @t. Thjesht do t'ju duhet të ndërroni @t për emrin tuaj aktual të tabelës. Kjo më dha fut përshkrimin e imazhit këtu

Pastaj marr këto të dhëna dhe stërvit rreshtin dhe kolonën ku të dhënat duhet të vendosen. Në këtë shembull unë jam duke përdorur një parametër për të përcaktuar numrin e kolonave që dua. Mund ta bëni këtë dhe ta kaloni nga raporti juaj nëse është i dobishëm, ose thjesht ta ndryshoni në një vlerë statike. Do të demonstroj me kalimin e parametrit.

Këtu është pyetja (Shënim ju duhet të komentoni deklaratën @Columns nëse doni ta kaloni këtë nga raporti juaj, por tani për tani ne thjesht po testojmë në SSMS ose të ngjashme.

-- REPLACE @t with your actual tablename below
DECLARE @Columns int = 2 -- <= comment this out when you copy into your dataset query

SELECT 
    *
    , ColumnNum = ((SortOrder-1) % @Columns) + 1
    , RowNum = ROW_NUMBER() OVER(PARTITION BY GroupID, SortOrder % @Columns ORDER BY SortOrder)
    FROM(
        SELECT 
                ROW_NUMBER() OVER(PARTITION BY GroupID ORDER BY dt) as SortOrder,
                GroupID, dt
            FROM @t) x 
    ORDER BY GroupID, SortOrder

Kjo na jep daljen e mëposhtme

Tani gjithçka që duhet të bëjmë është të përdorim një kontroll matricë në raport për ta shfaqur atë në mënyrë korrekte.

  1. Krijo një raport të ri
  2. Shto një burim të dhënash dhe një grup të dhënash
  3. Vendosni pyetjen tuaj të të dhënave si më sipër mbani mend për të komentuar rreshtin DECLARE @Columns nëse doni ta parametrizoni atë.
  4. Shtoni një kontroll matricë
  5. Zvarrit RowNum te vendmbajtësja e "Rreshtave", dt te mbajtësja e "të dhënave" dhe në fund zgjidh ColNum në vendmbrojtësin e kolonave

Matrica duhet të duket kështu (nuk kemi mbaruar ende...)

fut përshkrimin e imazhit këtu

  1. Në panelin e grupeve të rreshtave, tërhiqni GroupID mbi grupin e rreshtit në dalje (sipër rownum në shembullin tim) në mënyrë që të krijojë një grup prind.
  2. Së fundi, shtoni një rresht bosh brenda grupit RowGroup duke klikuar me të djathtën në kutinë e tekstit rownum dhe duke bërë Insert Row, Inside Group - Below. Kjo thjesht do të na japë një hendek midis grupeve

Shënim: Kam ndryshuar ngjyrën e kutive të tekstit rownum dhe columnnum pasi mund t'i fshijmë këto pasi të përfundojë testimi.

Dizajni përfundimtar duhet të duket kështu.

fut përshkrimin e imazhit këtu

Kur ekzekutojmë raportin dhe vendosim parametrin në 2, marrim këtë

fut përshkrimin e imazhit këtu

vendoseni në 3 dhe ne e marrim këtë

fut përshkrimin e imazhit këtu

Tani mund të hiqni rreshtin e sipërm dhe kolonën e mesme për të hequr qafe numrat e rreshtit dhe kolonës. Nëse dëshironi të keni një kokë grupi si në mostrën tuaj. Shtoni përsëri një rresht brenda grupit, por këtë herë në krye dhe më pas shtoni një shprehje për të dhënë titullin tuaj të dëshiruar.

25.02.2021
  • Përgjigja juaj e detajuar është shumë më tepër nga sa mund të kisha shpresuar. Nuk e kuptova kur pyeta, por doli që më duhej një grup shtesë (nëngrup nëse do). Unë përshtata SQL-në tuaj në përputhje me rrethanat dhe rregullova tablix-in sipas të njëjtës logjikë. Kjo padyshim më ka ndihmuar të përmirësoj aftësitë e mia SSRS. Faleminderit Alan! Unë kam ende disa probleme me kokën e grupit. Në thelb, unë do të doja që ajo të përfshinte të gjitha kolonat e matricës (bashkoni qelizat si të thuash). Më është dashur të pajtohem me të qenë në një kolonë të dedikuar në të majtë, por mund të kem gjetur një pyetje të ngjashme. Do ta provoj se shpejti. 03.03.2021
  • Ju mund të shtoni një rresht brenda grupit GroupID mbi rreshtat e tjerë, duhet të jeni në gjendje të bashkoni qelizat pasi ato nuk janë në grupin e detajeve dhe vendosni shprehjen në çfarëdo që ju pëlqen 03.03.2021
  • Nuk mendoj se po e marr. Në imazhin tuaj të fundit, në thelb do të doja që qelizat e 3 kollonave (që përmbajnë 1, 2 dhe 3) të bashkohen dhe të shtrihen në kolonat. Më pas do të shtoja një drejtkëndësh dhe kuti teksti për të rregulluar të dhënat e grupit për t'i bërë ato të paraqitshme. Megjithatë, opsioni i bashkimit është i disponueshëm vetëm për qelizat në të majtë të vijave të dyfishta të ndërprera (d.m.th. jo pjesë e grupit të kolonave). 04.03.2021
  • AH Po, pasi është një Matricë dhe jo një Tabelë, nuk mund të bashkoni qelizat nëpër kolona dinamike. Ju mund ta bëni këtë duke përdorur nënraporte. Nënraporti do të pranonte një parametër të vetëm GroupID dhe do të shfaqte vetëm të dhënat për atë grup, atëherë raporti kryesor do të kishte thjesht një tabelë të lidhur me një listë grupesh me nënraportin në rreshtin e detajeve të tabelës. Kjo do t'ju jepte kontroll të plotë, por nëse keni nevojë për ndihmë me këtë, filloni një pyetje të re. 04.03.2021
  • Ideja e nënraportit tingëllon mirë dhe mendoj se kam mjaftueshëm për të filluar, por do të duhet ta parkoj idenë tani për tani. Kjo do të jetë për V2. :) Faleminderit përsëri Alan! 04.03.2021
  • Materiale të reja

    Masterclass Coroutines: Kapitulli-3: Anulimi i korutinave dhe trajtimi i përjashtimeve.
    Mirë se vini në udhëzuesin gjithëpërfshirës mbi Kotlin Coroutines! Në këtë seri artikujsh, unë do t'ju çoj në një udhëtim magjepsës, duke filluar nga bazat dhe gradualisht duke u thelluar në..

    Faketojeni derisa ta arrini me të dhënat false
    A e gjeni ndonjëherë veten duke ndërtuar një aplikacion të ri dhe keni nevojë për të dhëna testimi që duken dhe duken më realiste ose një grup i madh të dhënash për performancën e ngarkesës...

    Si të përdorni kërkesën API në Python
    Kërkesë API në GitHub për të marrë depot e përdoruesve duke përdorur Python. Në këtë artikull, unë shpjegoj procesin hap pas hapi për të trajtuar një kërkesë API për të marrë të dhëna nga..

    Një udhëzues hap pas hapi për të zotëruar React
    Në këtë artikull, do të mësoni se si të krijoni aplikacionin React, do të mësoni se si funksionon React dhe konceptet thelbësore që duhet të dini për të ndërtuar aplikacione React. Learning..

    AI dhe Psikologjia — Pjesa 2
    Në pjesën 2 të serisë sonë të AI dhe Psikologji ne diskutojmë se si makineritë mbledhin dhe përpunojnë të dhëna për të mësuar emocione dhe ndjenja të ndryshme në mendjen e njeriut, duke ndihmuar..

    Esencialet e punës ditore të kodit tim VS
    Shtesat e mia të preferuara - Git Graph 💹 Kjo shtesë është vërtet e mahnitshme, e përdor përpara se të filloj të punoj për të kontrolluar dy herë ndryshimet dhe degët më të fundit, mund të..

    Pse Python? Zbulimi i fuqisë së gjithanshme të një gjiganti programues
    Në peizazhin gjithnjë në zhvillim të gjuhëve të programimit, Python është shfaqur si një forcë dominuese. Rritja e tij meteorike nuk është rastësi. Joshja e Python qëndron në thjeshtësinë,..