您可以使用快速case語句....
select
ProducerName
,case when ProducerRequirementListID = 1 then 'TRUE' else 'FALSE' end as Req1
,case when ProducerRequirementListID = 2 then 'TRUE' else 'FALSE' end as Req2
,case when ProducerRequirementListID = 3 then 'TRUE' else 'FALSE' end as Req3
from ProducerName
這是一種方式來獲得只是一個誰是缺少一個生產者的列表...
select ProducerName
from ProducerTable
group by ProducerName
having count(ProducerName) < 3
這裏有一個更好的方法,使用來自django的測試數據,找出哪一個丟失...
select
ProducerName
,case
when sum(ProducerRequirementListID) = 3 then 3
when sum(ProducerRequirementListID) = 4 then 2
when sum(ProducerRequirementListID) = 5 then 1
when sum(ProducerRequirementListID) = 6 then NULL
end as MissingReq
from ProducerTable
group by ProducerName
測試數據
DECLARE @People TABLE (PersonName VARCHAR(128), Ord INT);
INSERT INTO @People (PersonName, Ord) VALUES ('Brett', 1), ('Brett', 2), ('Brett', 3), ('Emily', 1), ('Emily', 2), ('Jake', 1), ('Jake', 3);
SELECT
PersonName,
case
when sum(Ord) = 4 then 2
when sum(Ord) = 3 then 3
when sum(Ord) = 5 then 1
when sum(Ord) = 6 then NULL
end as MissingReq
from @People
group by PersonName
不,你絕對不應該爲此使用循環。循環是非常糟糕的,效率低下,應該儘量避免,主要是郵件合併或一些管理任務。 –
我會敦促你在這裏規範你的結構。反覆重複ProducerName會變得非常成問題。如果你有超過1個同名的話會發生什麼?或者當您需要更改名稱時會發生什麼,因爲輸入的名稱不正確?您必須更新Producer表中的所有行而不是1行。 –
謝謝#Sean。我贊同你。我們正在努力使結構正常化。謝謝 – Oleg