Önceki alanlardaki değerlere göre alanların farklı olduğu satırları döndür

Bir önceki alan değerlerinin dinamik birleşimi temelinde, ikinci sütundan sonra herhangi bir alanda bir fark olduğunda tüm satırları döndürecek bir sorgu oluşturmaya çalışıyorum.

Senaryoya benzer olurdu:
Birisine satın almak istedikleri bir ürün için bir dizi soru sormaya gidiyorum. Satın almak istedikleri ürün türünü kurduktan sonra başka bir soru sormak istiyorum. Verdikleri cevaba bağlı olarak, başka bir soru sorabilirim, ancak soru ilk cevaba bağlı olarak değişebilir.

Here is an example set of data:

Item|Question1|Answer1|Question2|Answer2|Question3|Answer3
123|Front Door|Material|Wood|Type of Wood|Oak|Color|Red
456|Front Door|Material|Wood|Type of Wood|Oak|Color|Tan
789|Front Door|Material|Wood|Type of Wood|Oak|NULL|NULL
321|Front Door|Material|Steel|Type of Steel|T304|NULL|NULL
654|Front Door|Material|Steel|NULL|NULL|NULL|NULL
987|Closet Door|Material|Wood|Type of Wood|Oak|Color|Red
741|Closet Door|Material|Wood|Type of Wood|Oak|Color|Tan
852|Closet Door|Material|Steel|Type of Steel|T304|NULL|NULL
963|Closet Door|Material|Steel|Type of Steel|T304|NULL|NULL

I want to return all of the rows where there is a variance in the order of questions based on the previous answer, so the following rows would return:

123|Front Door|Material|Wood|Type of Wood|Oak|Color|Red
456|Front Door|Material|Wood|Type of Wood|Oak|Color|Tan
789|Front Door|Material|Wood|Type of Wood|Oak|NULL|NULL

Bunun nedeni, 789 için "Renk" sormayı unuttum, ya da 123 ve 456 için "Renk" sormam gerekmiyor

321|Front Door|Material|Steel|Type of Steel|T304|NULL|NULL
654|Front Door|Material|Steel|NULL|NULL|NULL|NULL

Bunun nedeni, 654 için "Çelik Tipi" sormayı unuttum, ya da 321 için sormam gerekmiyor.

Soruların sırasına göre bir fark olup olmadığını belirlemek için bir sorgum var, ama bir önceki soruya verilecek cevaba nasıl dayanacağını anlayamıyorum.

Şimdiden teşekkürler!

0
Veritabanınızı normalleştirin ve sonra soruyu cevaplarken bir bıçak alabiliriz.
katma yazar Michael Goldshteyn, kaynak
Üzgünüm, önceki değerleri değil, önceki değerleri kastediyorum. A + b = c ise, o zaman bir + b + c = d, o zaman bir + b + c + d = e ....
katma yazar user955289, kaynak
Veritabanında herhangi bir değişiklik yapamam. Ben dba değilim ve sadece okuma erişimi var. Bunu yapmanın tek yolu bu mu?
katma yazar user955289, kaynak
@Michael Golshteyn ile katılıyorum. Tablo ITEM/QUESTION (yani soru #)/CEVAP (bu soru için) ise, sorun veritabanı merkezli set tabanlı bir çözüm için daha uygun olacaktır. Öyleyse, hemen hemen prosedürel kod yazmak zorundasınızdır, ya da tabloyu biçimsel biçime dönüştürmek için bir pivot sorguya ihtiyacınız vardır.
katma yazar Philip Kelley, kaynak
"Önceki" sıranın ne olduğunu nasıl bilmeliyiz? Daha önce ne olduğunu belirlemek için bakabileceğimiz bir tarih alanı var mı? Ayrıca, kullanıcı 1'in bunu belirttiğini belirten bir şey var, kullanıcı 2, ancak bu, yukarıdaki verilerde gösterilmiyor mu?
katma yazar billinkc, kaynak
Ne yapmak istiyorsan Uzman Sistem denir. Bunu yapmak için bir çeşit programlama dili kullandığınızı varsayalım. Önceki cevapları bir değişkene veya bir şeye kaydeder misiniz?
katma yazar skw, kaynak

Cevap yok

0