Bir satırdaki tüm değerler eşit olmadığında bir Geçiş/Hata sütunu döndüren bir tablo karşılaştırması sorgusu yazmayı deniyorum. Temel sözdizim var, ancak belirli satırlar değil, tüm veri kümesinin Geçirilmesi/Başarısız Olması. Bir yerde bir alt sorgu kullanmam gerekip gerekmediğinden emin değilim. Teşekkürler!SQL Tablosu Karşılaştırması CASE T SQL Kullanılıyor
Actual Output:
TestID LastName FirstName PrimaryLevel Result
1 Smith John 1 Fail
2 Jones Adam 2 Fail
3 Barker Bob 3 Fail
Expected Output:
TestID LastName FirstName PrimaryLevel Result
1 Smith John 1 Pass
2 Jones Adam 2 Fail
3 Barker Bob 3 Fail
--Code:
declare @TestID int
declare @TestIDExpected varchar(max)
declare @LastNameExpected varchar(max)
declare @FirstNameExpected varchar(max)
declare @PrimaryLevelExpected varchar(max)
declare @TestIDActual varchar(max)
declare @LastNameActual varchar(max)
declare @FirstNameActual varchar(max)
declare @PrimaryLevelActual varchar(max)
set @TestID = 3
set @TestIDExpected = (select TestID from ExpectedResults where TestID = @TestID)
set @LastNameExpected = (select LastName from ExpectedResults where TestID = @TestID)
set @FirstNameExpected = (select FirstName from ExpectedResults where TestID = @TestID)
set @PrimaryLevelExpected = (select PrimaryLevel from ExpectedResults where TestID = @TestID)
set @TestIDActual = (select TestID from ActualResults where TestID = @TestID)
set @LastNameActual = (select LastName from ActualResults where TestID = @TestID)
set @FirstNameActual = (select FirstName from ActualResults where TestID = @TestID)
set @PrimaryLevelActual = (select PrimaryLevel from ActualResults where TestID = @TestID)
select TestID, LastName, FirstName, PrimaryLevel,
case
when @TestIDExpected = @TestIDActual and @LastNameExpected = @LastNameActual and @FirstNameExpected = @FirstNameActual and @PrimaryLevelExpected = @PrimaryLevelActual then 'Pass'
else 'Fail'
END as Result from ActualResults
Mantığınız hakkında biraz bilgi verir misiniz? John Smith'in neden geçmesi bekleniyor ve diğer ikisi başarısız mı? – Mureinik
Sorun değil, teşekkürler. John Smith, ExpectedResults ve Fiili sonuçlarda döndürülen değerler = olduğu için geçer. Diğer iki satır değil. Şu anda baktığımızda, 3 testin tümünü çalıştırmaya çalıştığımda TestID'nin 3 olarak ayarlanmış olması bir şey olabilir. – AndrewC10