March 25, 2014 at 10:05 am
I have two tables to be joined
Doc:
ID, DivID
Division:
ID, Div
CREATE TABLE [dbo].[Doc](
[ID] [int] NULL,
[DivID] [int] NULL
)
CREATE TABLE [dbo].[Division](
[ID] [int] NULL,
[Div] [int] NULL
)
insert into Doc (ID, DivID) Values (1, 1)
insert into Doc (ID, DivID) Values (2, 2)
insert into Doc (ID, DivID) Values (3, 1)
insert into Doc (ID, DivID) Values (4, 3)
insert into Doc (ID, DivID) Values (5, 2)
insert into Doc (ID, DivID) Values (6, 8)
insert into Doc (ID, DivID) Values (7, 7)
insert into Division (ID, Div) Values (1, 'Div1')
insert into Division (ID, Div) Values (2, 'Div2')
insert into Division (ID, Div) Values (3, 'Div3')
insert into Division (ID, Div) Values (4, 'Div4')
insert into Division (ID, Div) Values (5, 'Div5')
insert into Division (ID, Div) Values (6, 'Div6')
insert into Division (ID, Div) Values (7, 'Div7')
insert into Division (ID, Div) Values (8, 'Div8')
As you can see, some Divisions have no correspondents in Doc, I want to show the count(1) result as 0 for those Division, and output the result in the order by DivID
Thank you very much for your help
March 25, 2014 at 10:08 am
Can you provide a sample output of what you would expect given your data? I am struggling to understand what data you want returned.
MCITP SQL 2005, MCSA SQL 2012
March 25, 2014 at 10:30 am
RTaylor2208 (3/25/2014)
Can you provide a sample output of what you would expect given your data? I am struggling to understand what data you want returned.
I am looking for an output like:
DivID Total
1 1
2 2
3 0
4 1
5 2
6 0
7 1
8 0
Thanks.
March 25, 2014 at 10:33 am
Is this a good start? Without your expected results based on the sample data it is hard to know what you are actually looking for here.
CREATE TABLE [dbo].[Doc](
[ID] [int] NULL,
[DivID] [int] NULL
)
CREATE TABLE [dbo].[Division](
[ID] [int] NULL,
[Div] varchar(16) NULL
)
insert into Doc (ID, DivID) Values (1, 1)
insert into Doc (ID, DivID) Values (2, 2)
insert into Doc (ID, DivID) Values (3, 1)
insert into Doc (ID, DivID) Values (4, 3)
insert into Doc (ID, DivID) Values (5, 2)
insert into Doc (ID, DivID) Values (6, 8)
insert into Doc (ID, DivID) Values (7, 7)
insert into Division (ID, Div) Values (1, 'Div1')
insert into Division (ID, Div) Values (2, 'Div2')
insert into Division (ID, Div) Values (3, 'Div3')
insert into Division (ID, Div) Values (4, 'Div4')
insert into Division (ID, Div) Values (5, 'Div5')
insert into Division (ID, Div) Values (6, 'Div6')
insert into Division (ID, Div) Values (7, 'Div7')
insert into Division (ID, Div) Values (8, 'Div8')
select
*
from
dbo.Division d1
left outer join dbo.Doc d2
on (d1.ID = d2.DivID)
go
drop table dbo.Doc;
drop table dbo.Division;
March 25, 2014 at 10:42 am
Hi,
My Take on it.. 🙂
WITH DocCTE (DivIDCte, DivIDCount)
AS
(SELECT DivID,
COUNT(DivID)
FROM Doc GROUP BY DivID)
SELECTID,
Div,
'Count' = ISNULL(DivIDCount,0)
FROM Division d
LEFT OUTER JOIN DocCTE dc ON dc.DivIDCte = d.ID
March 25, 2014 at 10:54 am
dbalmf (3/25/2014)
Hi,My Take on it.. 🙂
WITH DocCTE (DivIDCte, DivIDCount)
AS
(SELECT DivID,
COUNT(DivID)
FROM Doc GROUP BY DivID)
SELECTID,
Div,
'Count' = ISNULL(DivIDCount,0)
FROM Division d
LEFT OUTER JOIN DocCTE dc ON dc.DivIDCte = d.ID
Thank you and Lynn very much, this is what I need
Viewing 6 posts - 1 through 6 (of 6 total)
You must be logged in to reply to this topic. Login to reply