Farklı Insert deyimlerini yürütmek için Sayıma dayalı IF ELSE deyimini kullanma

Veritabanımda arama yaparken, belirli bir öğenin mevcut olmadığını tespit edersem bir INSERT deyimi çalıştırıyorum ve bu öğeden bir veya daha fazlasını bulursam farklı bir INSERT deyimi çalıştırıyorum.

IF ELSE ifadelerinin nasıl kullanılacağından tam olarak emin değilim.

Şu ana kadar sahip olduğum şey, hedef verinin kaç kez göründüğünü sayacak bir deyimdir; 0'dan büyükse TRUE, değilse FALSE yazdıracaktır. Bunu iki farklı INSERT deyimi çalıştırmak için nasıl kullanabileceğimi anlamama yardımcı olacak herhangi bir örnek bulamıyorum.

Şu ana kadar elimde olanlar bunlar:

SELECT CASE WHEN COUNT(*)>0 THEN 'TRUE' ELSE 'FALSE' END
(
  SELECT [Some Column], COUNT(*) TotalCount
  FROM INCIDENTS
  WHERE [Some Column] = 'Target Data'
  GROUP BY [Some Column]
)

Ne demek istediğinizi pek anlamadım

"Bunu nasıl kullanabileceğimi anlamama yardımcı olacak herhangi bir örnek bulamıyorum 2 farklı ifade çalıştırın:"

. Peşinde olduğunuz SWITCH gibi CASE kullanmak mı?

select case when totalCount >= 0 and totalCount < 11 then '0-10'
            when tatalCount > 10 and totalCount < 101 then '10-100'
            else '>100' end as newColumn
from (
  SELECT [Some Column], COUNT(*) TotalCount
  FROM INCIDENTS
  WHERE [Some Column] = 'Target Data'
  GROUP BY [Some Column]
) A
Yorumlar (0)

Açık bir çözüm, 2 ayrı sorgu çalıştırmaktır, önce count=1 olan tüm öğeleri seçin ve eklemenizi çalıştırın, ardından count>1 olan öğeleri seçin ve ikinci eklemeyi çalıştırın.

İkinci adım olarak, iki ekleme benzer ise muhtemelen bunları tek bir sorguda birleştirebilirsiniz.

başka bir olasılık da kayıt kümenizde döngü yapmak için bir imleç kullanmak ve her satır için ihtiyacınız olan mantığı uygulamaktır.

Yorumlar (1)

Bu SQL Server'da ise, söz diziminiz doğrudur; ancak, iç içe sorgunuzdaki Toplam Sayı olarak COUNT(*)'a başvurmanız gerekir. Bu size ihtiyacınız olanı verecektir:

SELECT CASE WHEN TotalCount >0 THEN 'TRUE' ELSE 'FALSE' END FROM
(
  SELECT [Some Column], COUNT(*) TotalCount
  FROM INCIDENTS
  WHERE [Some Column] = 'Target Data'
  GROUP BY [Some Column]
) DerivedTable

Bunu kullanarak, TotalCount'u bir değişkene atayabilir ve ardından INSERT deyimlerinizi yürütmek için bir IF ELSE deyimi kullanabilirsiniz:

DECLARE @TotalCount int
SELECT @TotalCount = TotalCount FROM
(
  SELECT [Some Column], COUNT(*) TotalCount
  FROM INCIDENTS
  WHERE [Some Column] = 'Target Data'
  GROUP BY [Some Column]
) DerivedTable
IF @TotalCount > 0
    -- INSERT STATEMENT 1 GOES HERE
ELSE
    -- INSERT STATEMENT 2 GOES HERE
Yorumlar (2)