Select colonna calcolata

venerdì 08 agosto 2008 - 10.42

memmo77 Profilo | Expert

Ho una colonna calcolata sulla mia tabella ma se faccio una select della stessa non esce, come posso risolvere? Grazie

lbenaglia Profilo | Guru

>Ho una colonna calcolata sulla mia tabella ma se faccio una select
>della stessa non esce, come posso risolvere?
Postando i comandi DDL di CREATE TABLE, alcune righe di prova ed il risultato che vorresti ottenere.
Ah, dimenticavo, ovviamente devi dirci con quale DBMS stai lavorando

>Grazie
Prego.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

memmo77 Profilo | Expert

>Postando i comandi DDL di CREATE TABLE, alcune righe di prova ed il risultato che vorresti ottenere.
>Ah, dimenticavo, ovviamente devi dirci con quale DBMS stai lavorando
scusa hai perfettamente ragione.
Sto usando sql2005, la colonna nella tabella è dichiarata come
[RAPPORTO_REQ] AS (([REQUISITO_POST]/[REQUISITO_ANTE])*(100)),
ed è di tipo calcolata. la selet che dovrei fare, è una semplice select che comprende anche questo campo. Se la faccio non mi esce proprio come colonna:

SELECT
RAPPORTO_REQ
FROM Tabella

>Prego.
Rigrazie

lbenaglia Profilo | Guru

>>Postando i comandi DDL di CREATE TABLE, alcune righe di prova ed il risultato che vorresti ottenere.
>>Ah, dimenticavo, ovviamente devi dirci con quale DBMS stai lavorando
>Sto usando sql2005, la colonna nella tabella è dichiarata come
> [RAPPORTO_REQ] AS (([REQUISITO_POST]/[REQUISITO_ANTE])*(100)),
Ripeto, posta tutti i dati richiesti altrimenti non possiamo rispondere adeguatamente.

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

memmo77 Profilo | Expert

Intendi questo?

CREATE TABLE [dbo].[T_DIZIONARIO_LIVELLO3_CARTOL_INP2](
[SYS_USER] [varchar](25) NULL,
[SYS_DATA_AGGIOR] [datetime] NULL CONSTRAINT [DF_T_DIZIONARIO_LIVELLO3_CARTOL_INP2_SYS_DATA_AGGIOR] DEFAULT (getdate()),
[ANNO] [smallint] NOT NULL,
[MESE] [smallint] NOT NULL,
[ID_LIV0] [smallint] NULL,
[ID_LIV1] [smallint] NULL,
[ID_LIV2] [int] NULL,
[FK_ID_RUOLO] [smallint] NOT NULL,
[TOTALE_NOTES] [float] NOT NULL CONSTRAINT [DF_T_DIZIONARIO_LIVELLO3_CARTOL_INP2_TOTALE_NOTES] DEFAULT ((0)),
[TOTALE_NOTES_SENIOR] [float] NOT NULL CONSTRAINT [DF_T_DIZIONARIO_LIVELLO3_CARTOL_INP2_TOTALE_NOTES_SENIOR] DEFAULT ((0)),
[TOTALE_NOTES_MEZZANINE] [float] NOT NULL CONSTRAINT [DF_T_DIZIONARIO_LIVELLO3_CARTOL_INP2_TOTALE_NOTES_MEZZANINE] DEFAULT ((0)),
[FATT_MEDIO_POND] [smallint] NOT NULL,
[REQUISITO_POST] [float] NOT NULL CONSTRAINT [DF_T_DIZIONARIO_LIVELLO3_CARTOL_INP2_REQUISITO_POST] DEFAULT ((0)),
[REQUISITO_ANTE] [float] NOT NULL,
[REQUISITO_POST_T] [float] NOT NULL CONSTRAINT [DF_T_DIZIONARIO_LIVELLO3_CARTOL_INP2_REQUISITO_POST_T] DEFAULT ((0)),
[CAP_T] [float] NOT NULL CONSTRAINT [DF_T_DIZIONARIO_LIVELLO3_CARTOL_INP2_CAP_T] DEFAULT ((0)),
[CIA] [float] NOT NULL CONSTRAINT [DF_T_DIZIONARIO_LIVELLO3_CARTOL_INP2_CIA] DEFAULT ((0)),
[CIB] [float] NOT NULL CONSTRAINT [DF_T_DIZIONARIO_LIVELLO3_CARTOL_INP2_CIB] DEFAULT ((0)),
[CIC] [float] NOT NULL CONSTRAINT [DF_T_DIZIONARIO_LIVELLO3_CARTOL_INP2_CIC] DEFAULT ((0)),
[CIE] [float] NOT NULL CONSTRAINT [DF_T_DIZIONARIO_LIVELLO3_CARTOL_INP2_CIE] DEFAULT ((0)),
[PESO_TEORICO] [decimal](18, 2) NOT NULL CONSTRAINT [DF_T_DIZIONARIO_LIVELLO3_CARTOL_INP2_PESO_TEORICO] DEFAULT ((0)),
[RAPPORTO_REQ] AS (([REQUISITO_POST]/[REQUISITO_ANTE])*(100)),
CONSTRAINT [PK_T_DIZIONARIO_LIVELLO3_CARTOL_INP2_1] PRIMARY KEY CLUSTERED
(
[ANNO] ASC,
[MESE] ASC,
[TIPO_ANALISI] ASC,
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]

lbenaglia Profilo | Guru

>Intendi questo?
<SNIP>
Si, ma mancano le INSERT ed il result set finale.
Comunque osservando il tuo codice si nota che REQUISITO_ANTE può assumere il valore 0, dando origine ad una Divide by zero sulla colonna calcolata.

Quanto vale la colonna Problemi?

SELECT COUNT(*) AS Problemi FROM dbo.T_DIZIONARIO_LIVELLO3_CARTOL_INP2 WHERE REQUISITO_ANTE = 0;

Ciao!
--
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo/
http://italy.mvps.org

memmo77 Profilo | Expert

okok grazie mille, sembra che ho risolto, se non funzionasse mi rifaccio vivo .
Grazie
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5