Author |
Topic |
mutlyp
Starting Member
20 Posts |
Posted - 2012-05-03 : 17:11:01
|
I have a table that looks like this:ItemID FacilityID1 02 03 02 214 05 04 21What I need the result to be is:ItemID FacilityID1 03 05 0So I need to show all the Zeros in FacilityID that is not also marked as 21.Is that possible?thank you |
|
visakh16
Very Important crosS Applying yaK Herder
52326 Posts |
Posted - 2012-05-03 : 17:15:11
|
[code]SELECT ItemID,FieldIDFROM(SELECT *,SUM(CASE WHEN FacilityID = 21 THEN 1 ELSE 0 END) OVER (PARTITION BY ItemID) AS OccFROM Table)tWHERE Occ =0[/code]------------------------------------------------------------------------------------------------------SQL Server MVPhttp://visakhm.blogspot.com/ |
 |
|
mutlyp
Starting Member
20 Posts |
Posted - 2012-05-04 : 14:28:42
|
Thank you for the response and your query did work correctly. But now I have another problem. I have othe tables that need to be joined to this table. So the itemID is a Foriegh Key to another table that hold a list of Items also in that table there are Categories and Subcategroies for each item. When I try to incoroparate your query into my query that joins all the tables I get nothing but errors.Can you please tell me what I am doing wrong.Here is my querySELECT dbo.jha_Map_Item_Facilities.iItemID,dbo.jha_Map_Item_Facilities.iFacilityID, dbo.jha_Categories.sCat_Name, dbo.jha_SubCategories.sSubCat_Name,dbo.jha_ItemList.iIsActiveFROM dbo.jha_Map_Item_Facilities INNER JOIN dbo.jha_ItemList ON dbo.jha_Map_Item_Facilities.iItemID = dbo.jha_ItemList.iItemID INNER JOIN dbo.jha_Categories ON dbo.jha_ItemList.iCatID = dbo.jha_Categories.iCatID INNER JOIN dbo.jha_SubCategories ON dbo.jha_ItemList.iSubCatID = dbo.jha_SubCategories.iSubCatIDWHERE (dbo.jha_ItemList.iIsActive = 1) AND (dbo.jha_Map_Item_Facilities.iFacilityID = @FacID)So what I need is to be able to incorurate your query with mine.Please help thank you.quote: Originally posted by visakh16
SELECT ItemID,FieldIDFROM(SELECT *,SUM(CASE WHEN FacilityID = 21 THEN 1 ELSE 0 END) OVER (PARTITION BY ItemID) AS OccFROM Table)tWHERE Occ =0 ------------------------------------------------------------------------------------------------------SQL Server MVPhttp://visakhm.blogspot.com/
|
 |
|
visakh16
Very Important crosS Applying yaK Herder
52326 Posts |
Posted - 2012-05-04 : 18:38:21
|
just do likeSELECT *FROM(SELECT dbo.jha_Map_Item_Facilities.iItemID,dbo.jha_Map_Item_Facilities.iFacilityID, dbo.jha_Categories.sCat_Name, dbo.jha_SubCategories.sSubCat_Name,dbo.jha_ItemList.iIsActiveFROM dbo.jha_Map_Item_Facilities INNER JOIN dbo.jha_ItemList ON dbo.jha_Map_Item_Facilities.iItemID = dbo.jha_ItemList.iItemID INNER JOIN dbo.jha_Categories ON dbo.jha_ItemList.iCatID = dbo.jha_Categories.iCatID INNER JOIN dbo.jha_SubCategories ON dbo.jha_ItemList.iSubCatID = dbo.jha_SubCategories.iSubCatIDWHERE (dbo.jha_ItemList.iIsActive = 1) AND (dbo.jha_Map_Item_Facilities.iFacilityID = @FacID))tINNER JOIN (SELECT *,SUM(CASE WHEN FacilityID = 21 THEN 1 ELSE 0 END) OVER (PARTITION BY ItemID) AS OccFROM Table)t1ON t1.ItemID = t.ItemIDAND t1.FacilityID = t.iFacilityIDAND t1.Occ=0 ------------------------------------------------------------------------------------------------------SQL Server MVPhttp://visakhm.blogspot.com/ |
 |
|
mutlyp
Starting Member
20 Posts |
Posted - 2012-05-05 : 13:09:34
|
Hi Thank you again for your response. Unfortunately I am not getting any results when I run the query.I noticed in your query at the end you have "FROM Table)t1" what is Table suppose to be. Because I get an error saying incorrect syntax next to Table.I had to change my query a little and had to add a new table but the syntax is the same as yours.Here is the query I came up with:SELECT *FROM(SELECT dbo.jha_Map_Task_Facilities.iTaskID, dbo.jha_Categories.sCat_Name, dbo.jha_SubCategories.sSubCat_Name, dbo.jha_Specifics.sSpec_Name, dbo.jha_Map_Task_Facilities.iFacilityID, dbo.jha_TaskList.iIsActiveFROM dbo.jha_TaskList INNER JOIN dbo.jha_Categories ON dbo.jha_TaskList.iCatID = dbo.jha_Categories.iCatID INNER JOIN dbo.jha_Map_Task_Facilities ON dbo.jha_TaskList.iTaskID = dbo.jha_Map_Task_Facilities.iTaskID LEFT OUTER JOIN dbo.jha_SubCategories ON dbo.jha_TaskList.iSubCatID = dbo.jha_SubCategories.iSubCatID LEFT OUTER JOIN dbo.jha_Specifics ON dbo.jha_TaskList.iSpecID = dbo.jha_Specifics.iSpecIDWHERE (dbo.jha_TaskList.iIsActive = 1) AND (dbo.jha_Map_Task_Facilities.iFacilityID = 21))tINNER JOIN (SELECT *,SUM(CASE WHEN dbo.jha_Map_Task_Facilities.iFacilityID = 21 THEN 1 ELSE 0 END) OVER (PARTITION BY dbo.jha_Map_Task_Facilities.iTaskID) AS Occ FROM table)t1ON t1.iTaskID = t.iTaskIDAND t1.iFacilityID = t.iFacilityIDAND t1.Occ=0Please let me know what I am doing wrong.Thanks again for the help it is very much apreciated.quote: Originally posted by visakh16 just do likeSELECT *FROM(SELECT dbo.jha_Map_Item_Facilities.iItemID,dbo.jha_Map_Item_Facilities.iFacilityID, dbo.jha_Categories.sCat_Name, dbo.jha_SubCategories.sSubCat_Name,dbo.jha_ItemList.iIsActiveFROM dbo.jha_Map_Item_Facilities INNER JOIN dbo.jha_ItemList ON dbo.jha_Map_Item_Facilities.iItemID = dbo.jha_ItemList.iItemID INNER JOIN dbo.jha_Categories ON dbo.jha_ItemList.iCatID = dbo.jha_Categories.iCatID INNER JOIN dbo.jha_SubCategories ON dbo.jha_ItemList.iSubCatID = dbo.jha_SubCategories.iSubCatIDWHERE (dbo.jha_ItemList.iIsActive = 1) AND (dbo.jha_Map_Item_Facilities.iFacilityID = @FacID))tINNER JOIN (SELECT *,SUM(CASE WHEN FacilityID = 21 THEN 1 ELSE 0 END) OVER (PARTITION BY ItemID) AS OccFROM Table)t1ON t1.ItemID = t.ItemIDAND t1.FacilityID = t.iFacilityIDAND t1.Occ=0 ------------------------------------------------------------------------------------------------------SQL Server MVPhttp://visakhm.blogspot.com/
|
 |
|
visakh16
Very Important crosS Applying yaK Herder
52326 Posts |
Posted - 2012-05-05 : 13:40:24
|
quote: Originally posted by mutlyp Hi Thank you again for your response. Unfortunately I am not getting any results when I run the query.I noticed in your query at the end you have "FROM Table)t1" what is Table suppose to be. Because I get an error saying incorrect syntax next to Table.I had to change my query a little and had to add a new table but the syntax is the same as yours.Here is the query I came up with:SELECT *FROM(SELECT dbo.jha_Map_Task_Facilities.iTaskID, dbo.jha_Categories.sCat_Name, dbo.jha_SubCategories.sSubCat_Name, dbo.jha_Specifics.sSpec_Name, dbo.jha_Map_Task_Facilities.iFacilityID, dbo.jha_TaskList.iIsActiveFROM dbo.jha_TaskList INNER JOIN dbo.jha_Categories ON dbo.jha_TaskList.iCatID = dbo.jha_Categories.iCatID INNER JOIN dbo.jha_Map_Task_Facilities ON dbo.jha_TaskList.iTaskID = dbo.jha_Map_Task_Facilities.iTaskID LEFT OUTER JOIN dbo.jha_SubCategories ON dbo.jha_TaskList.iSubCatID = dbo.jha_SubCategories.iSubCatID LEFT OUTER JOIN dbo.jha_Specifics ON dbo.jha_TaskList.iSpecID = dbo.jha_Specifics.iSpecIDWHERE (dbo.jha_TaskList.iIsActive = 1) AND (dbo.jha_Map_Task_Facilities.iFacilityID = 21))tINNER JOIN (SELECT *,SUM(CASE WHEN dbo.jha_Map_Task_Facilities.iFacilityID = 21 THEN 1 ELSE 0 END) OVER (PARTITION BY dbo.jha_Map_Task_Facilities.iTaskID) AS Occ FROM table dbo.jha_Map_Task_Facilities)t1ON t1.iTaskID = t.iTaskIDAND t1.iFacilityID = t.iFacilityIDAND t1.Occ=0Please let me know what I am doing wrong.Thanks again for the help it is very much apreciated.quote: Originally posted by visakh16 just do likeSELECT *FROM(SELECT dbo.jha_Map_Item_Facilities.iItemID,dbo.jha_Map_Item_Facilities.iFacilityID, dbo.jha_Categories.sCat_Name, dbo.jha_SubCategories.sSubCat_Name,dbo.jha_ItemList.iIsActiveFROM dbo.jha_Map_Item_Facilities INNER JOIN dbo.jha_ItemList ON dbo.jha_Map_Item_Facilities.iItemID = dbo.jha_ItemList.iItemID INNER JOIN dbo.jha_Categories ON dbo.jha_ItemList.iCatID = dbo.jha_Categories.iCatID INNER JOIN dbo.jha_SubCategories ON dbo.jha_ItemList.iSubCatID = dbo.jha_SubCategories.iSubCatIDWHERE (dbo.jha_ItemList.iIsActive = 1) AND (dbo.jha_Map_Item_Facilities.iFacilityID = @FacID))tINNER JOIN (SELECT *,SUM(CASE WHEN FacilityID = 21 THEN 1 ELSE 0 END) OVER (PARTITION BY ItemID) AS OccFROM Table)t1ON t1.ItemID = t.ItemIDAND t1.FacilityID = t.iFacilityIDAND t1.Occ=0 ------------------------------------------------------------------------------------------------------SQL Server MVPhttp://visakhm.blogspot.com/
use actual table name in query------------------------------------------------------------------------------------------------------SQL Server MVPhttp://visakhm.blogspot.com/ |
 |
|
mutlyp
Starting Member
20 Posts |
Posted - 2012-05-05 : 21:55:58
|
Hi Again,Sorry for not getting this but I don't understand what you mean by "use actual table name in query"I used "jha_Map_Task_Facilities" which is the "Main" table I guess but when ran I get an error saying incorrct syntak next to t1.Like I said I have to change things around a little here is my code:SELECT *FROM(SELECT dbo.jha_Map_Task_Facilities.iTaskID,dbo.jha_Map_Task_Facilities.iFacilityID, dbo.jha_Categories.sCat_Name, dbo.jha_SubCategories.sSubCat_Name,dbo.jha_TaskList.iIsActiveFROM dbo.jha_Map_Task_Facilities INNER JOIN dbo.jha_TaskList ON dbo.jha_Map_Task_Facilities.iTaskID = dbo.jha_TaskList.iTaskID INNER JOIN dbo.jha_Categories ON dbo.jha_TaskList.iCatID = dbo.jha_Categories.iCatID INNER JOIN dbo.jha_SubCategories ON dbo.jha_TaskList.iSubCatID = dbo.jha_SubCategories.iSubCatIDWHERE (dbo.jha_TaskList.iIsActive = 1) AND (dbo.jha_Map_Task_Facilities.iFacilityID = @FacID))tINNER JOIN (SELECT *,SUM(CASE WHEN FacilityID = 21 THEN 1 ELSE 0 END) OVER (PARTITION BY TaskID) AS OccFROM dbo.jha_Map_Task_Facilities)t1ON t1.TaskID = t.iTaskIDAND t1.FacilityID = t.iFacilityIDAND t1.Occ=0again sorry for being a pain but please let me know what I am doing wrong.Thank youquote: Originally posted by visakh16
quote: Originally posted by mutlyp Hi Thank you again for your response. Unfortunately I am not getting any results when I run the query.I noticed in your query at the end you have "FROM Table)t1" what is Table suppose to be. Because I get an error saying incorrect syntax next to Table.I had to change my query a little and had to add a new table but the syntax is the same as yours.Here is the query I came up with:SELECT *FROM(SELECT dbo.jha_Map_Task_Facilities.iTaskID, dbo.jha_Categories.sCat_Name, dbo.jha_SubCategories.sSubCat_Name, dbo.jha_Specifics.sSpec_Name, dbo.jha_Map_Task_Facilities.iFacilityID, dbo.jha_TaskList.iIsActiveFROM dbo.jha_TaskList INNER JOIN dbo.jha_Categories ON dbo.jha_TaskList.iCatID = dbo.jha_Categories.iCatID INNER JOIN dbo.jha_Map_Task_Facilities ON dbo.jha_TaskList.iTaskID = dbo.jha_Map_Task_Facilities.iTaskID LEFT OUTER JOIN dbo.jha_SubCategories ON dbo.jha_TaskList.iSubCatID = dbo.jha_SubCategories.iSubCatID LEFT OUTER JOIN dbo.jha_Specifics ON dbo.jha_TaskList.iSpecID = dbo.jha_Specifics.iSpecIDWHERE (dbo.jha_TaskList.iIsActive = 1) AND (dbo.jha_Map_Task_Facilities.iFacilityID = 21))tINNER JOIN (SELECT *,SUM(CASE WHEN dbo.jha_Map_Task_Facilities.iFacilityID = 21 THEN 1 ELSE 0 END) OVER (PARTITION BY dbo.jha_Map_Task_Facilities.iTaskID) AS Occ FROM table dbo.jha_Map_Task_Facilities)t1ON t1.iTaskID = t.iTaskIDAND t1.iFacilityID = t.iFacilityIDAND t1.Occ=0Please let me know what I am doing wrong.Thanks again for the help it is very much apreciated.quote: Originally posted by visakh16 just do likeSELECT *FROM(SELECT dbo.jha_Map_Item_Facilities.iItemID,dbo.jha_Map_Item_Facilities.iFacilityID, dbo.jha_Categories.sCat_Name, dbo.jha_SubCategories.sSubCat_Name,dbo.jha_ItemList.iIsActiveFROM dbo.jha_Map_Item_Facilities INNER JOIN dbo.jha_ItemList ON dbo.jha_Map_Item_Facilities.iItemID = dbo.jha_ItemList.iItemID INNER JOIN dbo.jha_Categories ON dbo.jha_ItemList.iCatID = dbo.jha_Categories.iCatID INNER JOIN dbo.jha_SubCategories ON dbo.jha_ItemList.iSubCatID = dbo.jha_SubCategories.iSubCatIDWHERE (dbo.jha_ItemList.iIsActive = 1) AND (dbo.jha_Map_Item_Facilities.iFacilityID = @FacID))tINNER JOIN (SELECT *,SUM(CASE WHEN FacilityID = 21 THEN 1 ELSE 0 END) OVER (PARTITION BY ItemID) AS OccFROM Table)t1ON t1.ItemID = t.ItemIDAND t1.FacilityID = t.iFacilityIDAND t1.Occ=0 ------------------------------------------------------------------------------------------------------SQL Server MVPhttp://visakhm.blogspot.com/
use actual table name in query------------------------------------------------------------------------------------------------------SQL Server MVPhttp://visakhm.blogspot.com/
|
 |
|
visakh16
Very Important crosS Applying yaK Herder
52326 Posts |
Posted - 2012-05-05 : 23:41:28
|
Sorry I'm not getting any error. Are you using SQL 2005 and above?------------------------------------------------------------------------------------------------------SQL Server MVPhttp://visakhm.blogspot.com/ |
 |
|
mutlyp
Starting Member
20 Posts |
Posted - 2012-05-06 : 15:13:04
|
Yes I am using 2008 R2quote: Originally posted by visakh16 Sorry I'm not getting any error. Are you using SQL 2005 and above?------------------------------------------------------------------------------------------------------SQL Server MVPhttp://visakhm.blogspot.com/
|
 |
|
mutlyp
Starting Member
20 Posts |
Posted - 2012-05-06 : 15:30:56
|
 quote: Originally posted by visakh16 Sorry I'm not getting any error. Are you using SQL 2005 and above?------------------------------------------------------------------------------------------------------SQL Server MVPhttp://visakhm.blogspot.com/
|
 |
|
mutlyp
Starting Member
20 Posts |
Posted - 2012-05-06 : 19:01:34
|
I figured it out. Had to get rid of the @FacID. That narrows the field down so I get nothing back.Here is the code that worked:Select *FROM(SELECT dbo.jha_Map_Task_Facilities.iTaskID, dbo.jha_Map_Task_Facilities.iFacilityID, dbo.jha_Categories.sCat_Name, dbo.jha_SubCategories.sSubCat_Name, dbo.jha_Specifics.sSpec_NameFROM dbo.jha_Categories INNER JOIN dbo.jha_TaskList ON dbo.jha_Categories.iCatID = dbo.jha_TaskList.iCatID INNER JOIN dbo.jha_Map_Task_Facilities ON dbo.jha_TaskList.iTaskID = dbo.jha_Map_Task_Facilities.iTaskID LEFT OUTER JOIN dbo.jha_SubCategories ON dbo.jha_TaskList.iSubCatID = dbo.jha_SubCategories.iSubCatID LEFT OUTER JOIN dbo.jha_Specifics ON dbo.jha_TaskList.iSpecID = dbo.jha_Specifics.iSpecIDWHERE (dbo.jha_TaskList.iIsActive = 1))tINNER JOIN (SELECT dbo.jha_Map_Task_Facilities.iTaskID, dbo.jha_Map_Task_Facilities.iFacilityID, SUM(CASE WHEN dbo.jha_Map_Task_Facilities.iFacilityID = 21 THEN 1 ELSE 0 END) OVER (PARTITION BY dbo.jha_Map_Task_Facilities.iTaskID) AS OccFROM dbo.jha_Map_Task_Facilities)t1ON t1.iTaskID = t.iTaskID AND t1.iFacilityID = t.iFacilityID AND t1.Occ=0Thanks again for all your help |
 |
|
visakh16
Very Important crosS Applying yaK Herder
52326 Posts |
Posted - 2012-05-06 : 19:24:59
|
unless you post some data and explain what you're trying to get i dont think anybody will be able to help you outpost resulst of first query and then explain what you want out of it------------------------------------------------------------------------------------------------------SQL Server MVPhttp://visakhm.blogspot.com/ |
 |
|
|