Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [SQL Server][SQL Server] Riempire campo vuoto in una view tramite stored procedure

    Salve,
    sto cercando di "riempire" un campo che in determinati casi risulta vuoto quando creo una vista.
    In pratica la tabella riguarda dei movimenti di magazzino, a volte pu� capitare che anzich� avere il campo articolo valorizzato, sia a null perch� fa riferimento ad un altro articolo presente nella tabella e ho necessit� di effettuare una query annidata dentro la view ma logicamente va in errore perch� quando prova ad eseguirla non ho ancora quel valore disponibile.

    Cosa posso fare per ricavare quel valore prima di eseguire la vista ?
    Ultima modifica di bunnybuz; 07-03-2017 a 17:46 Motivo: titolo non corretto

  2. #2

  3. #3
    In pratica questa vista (join di 4 tabelle) è composta da una serie di campi tra cui "numero documento" e "ragione sociale", il primo farà sempre riferimento alla stessa ragione sociale ma non sempre la ragione sociale viene valorizzata, per colpa del gestionale che c'è a monte.
    Esempio:

    Documento numero | Ragione sociale
    121212 Pippo
    121212 null
    121212 null

    Devo trovare il modo di creare una vista dove la ragione sociale "pippo" venga comunque inserita sul relativo campo, pensavo di poterlo fare tramite una query tipo "select ragione sociale where documento numero = etc etc" ma logicamente dentro la vista non me lo fa fare.

  4. #4
    puoi postare la vista attuale?

  5. #5
    SELECT dbo.MA_JournalEntries.PostingDate AS DATAREGISTRAZIONE,
    dbo.MA_JournalEntries.DocumentDate AS DATADOCUMENTO,
    dbo.MA_JournalEntries.DocNo AS NUMERODOCUMENTO,
    dbo.MA_AccountingReasons.Description AS DESCRIZIONEMOVIMENTO,
    dbo.MA_JournalEntriesGLDetail.AmountType AS TIPOAMOUNT,
    dbo.MA_JournalEntriesGLDetail.Account AS CONTO,
    dbo.MA_JournalEntriesGLDetail.Amount,
    dbo.MA_JournalEntries.Currency,
    dbo.MA_JournalEntriesGLDetail.FixingDate, dbo.MA_JournalEntriesGLDetail.Fixing,
    CASE WHEN MA_JournalEntriesGLDetail.DebitCreditSign = '4980736' THEN 'DARE' ELSE 'AVERE' END AS [DARE/AVERE],
    dbo.MA_JournalEntriesGLDetail.CustSupp AS [IDCLIENTE/FORNITORE],
    MA_JournalEntriesGLDetail.CustSuppType AS TIPO,
    dbo.MA_CustSupp.CompanyName AS RAGIONESOCIALE,
    dbo.MA_JournalEntriesGLDetail.JournalEntryId,
    dbo.MA_JournalEntriesGLDetail.OffsetGroupNo
    FROM dbo.MA_JournalEntries INNER JOIN
    dbo.MA_JournalEntriesGLDetail ON dbo.MA_JournalEntries.JournalEntryId = dbo.MA_JournalEntriesGLDetail.JournalEntryId LEFT OUTER JOIN
    dbo.MA_AccountingReasons ON dbo.MA_AccountingReasons.Reason = dbo.MA_JournalEntriesGLDetail.AccRsn LEFT OUTER JOIN
    dbo.MA_CustSupp ON dbo.MA_CustSupp.CustSupp = dbo.MA_JournalEntriesGLDetail.CustSupp AND
    dbo.MA_CustSupp.CustSuppType = dbo.MA_JournalEntriesGLDetail.CustSuppType
    ORDER BY DATAREGISTRAZIONE DESC

    Questa è la select che genera la View, ci sono numero documento e ragione sociale, e il risultato è quella tabellina che ho postato prima, piu logicamente tutto gli altri campi.

  6. #6
    azz, puliscila un po' usando gli alias di tabella!

  7. #7
    invece di

    SELECT dbo.lamiatabelladeiclientidalnomelunghissimo.Ragio neSociale FROM dbo.lamiatabelladeiclientidalnomelunghissimo

    usa

    SELECT TC.RagioneSociale FROM dbo.lamiatabelladalnomelunghissimo TC

    TC=TabellaClienti.... ma usa quello che vuoi, purché sia breve!

  8. #8
    SELECT je.PostingDate AS DATAREGISTRAZIONE,
    je.DocumentDate AS DATADOCUMENTO,
    je.DocNo AS NUMERODOCUMENTO,
    dbo.MA_AccountingReasons.Description AS DESCRIZIONEMOVIMENTO,
    jed.AmountType AS TIPOAMOUNT,
    jed.Account AS CONTO,
    jed.Amount,
    je.Currency,
    jed.FixingDate, jed.Fixing,
    CASE WHEN jed.DebitCreditSign = '4980736' THEN 'DARE' ELSE 'AVERE' END AS [DARE/AVERE],
    jed.CustSupp AS [IDCLIENTE/FORNITORE],
    jed.CustSuppType AS TIPO,
    cs.CompanyName AS RAGIONESOCIALE,
    jed.JournalEntryId,
    jed.OffsetGroupNo
    FROM dbo.MA_JournalEntries as je INNER JOIN
    dbo.MA_JournalEntriesGLDetail as jed ON je.JournalEntryId = jed.JournalEntryId LEFT OUTER JOIN
    dbo.MA_AccountingReasons ON dbo.MA_AccountingReasons.Reason = jed.AccRsn LEFT OUTER JOIN
    dbo.MA_CustSupp as cs ON cs.CustSupp = jed.CustSupp AND
    cs.CustSuppType = jed.CustSuppType
    ORDER BY DATAREGISTRAZIONE DESC



    Meglio ? scusate abitudine...

  9. #9
    quindi è questa join

    dbo.MA_CustSupp as cs ON cs.CustSupp = jed.CustSupp

    che fallisce? è per via della mancanza di CustSupp in
    dbo.MA_JournalEntriesGLDetail ?


  10. #10
    SuburbanMedical & Wellness Center is located in Schaumburg, Illinois at 800 E WoodsfieldRd, Suite #102 Schaumburg. At Suburban Medical & Wellness Center, weprovide dedicated health care services by well trained board certified healthcare professionals.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.