目前,我有一個這樣的查詢:擴展SQL結果 - 添加行,如果不存在
SELECT d.[status]
,d.[PGID] as PGID
,pg.[nvarchar5] as PGName
,COUNT(d.[nvarchar10])
FROM
[content].[dbo].[USRData] d
INNER JOIN
[content].[dbo].[USRData] pg on d.[PGID] = pg.[tp_ID]
WHERE d.CatId = '12345'
AND d.[nvarchar10] is not null
AND d.[isActive] = 1
AND pg.[CatId] = '64521'
GROUP BY
pg.[nvarchar5]
,d.[status]
ORDER BY PGName
這是結果(只是一個虛構的例子):
status PGID PGName Total
--------- ------- --------- ---------
active 10 HR 120
deleted 10 HR 5
new 10 HR 10
active 15 IT 10
new 15 IT 40
deleted 32 FI 12
new 32 FI 30
我需要一個查詢這樣的結果應該是這樣的:
所不同的是:我要爲每一個PG總爲每個可能的狀態的列表,即使它不存在。如果它不存在,我需要一行例如「刪除15 IT 0」 我現在需要每個PG的每一個可能的狀態總數。
我需要改變什麼?
編輯: 更多信息
- 在當前查詢的內部聯接是PGID,而不是狀態
- 我的表,例如:use array/variable in sql-query
更新2: 與此查詢我得到更好的結果,只有總數不正確...
SELECT stat.status
,d.[PGID] as PGID
,pg.[nvarchar5] as PGName
,COUNT(d.[nvarchar10])
FROM
(select distinct [status]
from [content].[dbo].[USRData]
where CatId = '1234') stat cross Join
[content].[dbo].[USRData] d INNER JOIN
[content].[dbo].[USRData] pg on d.[PGID] = pg.[tp_ID]
where d.CatId = '1234'
AND d.[nvarchar10] is not null
AND stat.status is not null
AND d.[isActive] = 1
AND pg.[CatId] = '64521'
group by stat.status,
pg.[nvarchar5],
d.[PGID]
order by PGName
若按照這樣我的例子,這是我得到:
status PGID PGName Total
--------- ------- --------- ---------
active 10 HR 135
deleted 10 HR 135
new 10 HR 135
active 15 IT 50
deleted 15 IT 50
new 15 IT 50
active 32 FI 42
deleted 32 FI 42
new 32 FI 42
我得到的總的每PGName。我怎樣才能得到每個PGName /狀態的總數?
這裏是我的表的詳細信息:http://stackoverflow.com/questions/ 22475998/use-array-variable-in-sql-query/22476168?noredirect = 1#comment34189932_22476168 – endeka
我試過這段代碼,但它不工作。你現在瞭解與上面的鏈接自我加入? – endeka