Please start any new threads on our new site at https://forums.sqlteam.com. We've got lots of great SQL Server experts to answer whatever question you can come up with.

 All Forums
 General SQL Server Forums
 New to SQL Server Programming
 Case or If or?

Author  Topic 

Flaterik
Starting Member

26 Posts

Posted - 2011-05-20 : 05:20:56
Hi people, i have a big trouble.
I'm making a query that i paste in the quote.
So now my problem:
This is a table with a field DATADOC.
In the WHERE statement i must i select
ADB_TREND.dbo.DORig.Cd_DO = 'BO' but when datadoc = 2010 , ADB_TREND.dbo.DORig.Cd_DO = 'FT'.
Only this field must change in the statement


quote:

SELECT ADB_TREND.dbo.DORig.Cd_CF, ADB_TREND.dbo.AR.Modello, ADB_TREND.dbo.DORig.Cd_MGEsercizio, SUM(CASE WHEN MONTH(DataDoc)
= 1 THEN Qta ELSE NULL END) AS Gennaio, SUM(CASE WHEN MONTH(DataDoc) = 2 THEN qta ELSE NULL END) AS Febbraio, SUM(CASE WHEN MONTH(DataDoc)
= 3 THEN Qta ELSE NULL END) AS Marzo, SUM(CASE WHEN MONTH(DataDoc) = 4 THEN Qta ELSE NULL END) AS Aprile, SUM(CASE WHEN MONTH(DataDoc)
= 5 THEN Qta ELSE NULL END) AS Maggio, SUM(CASE WHEN MONTH(DataDoc) = 6 THEN Qta ELSE NULL END) AS Giugno, SUM(CASE WHEN MONTH(DataDoc)
= 7 THEN Qta ELSE NULL END) AS Luglio, SUM(CASE WHEN MONTH(DataDoc) = 8 THEN Qta ELSE NULL END) AS Agosto, SUM(CASE WHEN MONTH(DataDoc)
= 9 THEN Qta ELSE NULL END) AS Settembre, SUM(CASE WHEN MONTH(DataDoc) = 10 THEN Qta ELSE NULL END) AS Ottobre, SUM(CASE WHEN MONTH(DataDoc)
= 11 THEN Qta ELSE NULL END) AS Novembre, SUM(CASE WHEN MONTH(DataDoc) = 12 THEN Qta ELSE NULL END) AS Dicembre,
ADB_TREND.dbo.DORig.Cd_ARMisura
FROM ADB_TREND.dbo.DORig INNER JOIN
ADB_TREND.dbo.AR ON ADB_TREND.dbo.DORig.Cd_AR = ADB_TREND.dbo.AR.Cd_AR
WHERE (ADB_TREND.dbo.DORig.Cd_DO = 'FA' OR
ADB_TREND.dbo.DORig.Cd_DO = 'FT') AND (ADB_TREND.dbo.AR.Cd_ARGruppo1 = '100') AND (ADB_TREND.dbo.AR.Cd_ARGruppo2 = '050' OR
ADB_TREND.dbo.AR.Cd_ARGruppo2 = '100')
GROUP BY ADB_TREND.dbo.DORig.Cd_CF, ADB_TREND.dbo.AR.Modello, ADB_TREND.dbo.DORig.Cd_MGEsercizio, ADB_TREND.dbo.DORig.Cd_ARMisura)

nigelrivett
Master Smack Fu Yak Hacker

3385 Posts

Posted - 2011-05-20 : 05:32:03
where
(ADB_TREND.dbo.DORig.Cd_DO = 'BO' and datadoc <> 2010
or ADB_TREND.dbo.DORig.Cd_DO = 'FT' and datadoc = 2010
)
....

Are you sure about your where clause?
I always put brackets round the "or" parts if theye are mixed with and's to highlight the operator precedence.

==========================================
Cursors are useful if you don't know sql.
SSIS can be used in a similar way.
Beer is not cold and it isn't fizzy.
Go to Top of Page

Flaterik
Starting Member

26 Posts

Posted - 2011-05-20 : 06:11:40
Hi nigelrivett, thank you very much for your fast and CORRECT response

Work's very well!

About the brackets are quite sure about that works. If you see some evident error, i correct this.
These are my definitive WHERE function.

quote:
WHERE (ADB_TREND.dbo.AR.Cd_ARGruppo1 = '100') AND (ADB_TREND.dbo.AR.Cd_ARGruppo2 = '050' OR ADB_TREND.dbo.AR.Cd_ARGruppo2 = '100')AND
(ADB_TREND.dbo.DORig.Cd_DO = 'FA' OR
(ADB_TREND.dbo.DORig.Cd_DO = 'FT' and DataDoc = 2010 or ADB_TREND.dbo.DORig.Cd_DO = 'BO' and DataDoc <> 2010))
Go to Top of Page

nigelrivett
Master Smack Fu Yak Hacker

3385 Posts

Posted - 2011-05-20 : 06:43:45
Sorry - - I didn't notice the paired brackets around the first "or". Removal of the white spaces by th eforum doesn't help.

==========================================
Cursors are useful if you don't know sql.
SSIS can be used in a similar way.
Beer is not cold and it isn't fizzy.
Go to Top of Page
   

- Advertisement -