Tsql so'rovida ustunlar bo'yicha teng qatorli qiymatlarni topish

Men bu stolman

col 1   col 2   col 3   ....    col N
-------------------------------------
1       A       B               fooa        
10      A       foo             cc
4       A       B               fooa

Agar tsql so'rovi yordamida qiymatlar faqat bir xil qiymatga ega bo'lgan bitta qatorni qaytarish mumkin?

col 1   col 2   col 3   ....    col N
-------------------------------------
--      A       --              --
3

1 javoblar

SELECT
     CASE WHEN COUNT(col1) = COUNT(*) AND MIN(col1) = MAX(col1) THEN MIN(col1) END AS col1,
     CASE WHEN COUNT(col2) = COUNT(*) AND MIN(col2) = MAX(col2) THEN MIN(col2) END AS col2,
     ...
FROM yourtable

Ustundagi NULLlarga ruxsat berishingiz kerak:

  • COUNT (*) ularni hisoblaydi
  • COUNT (kol1) ularni sanab chiqmaydi

Ya'ni As va NULLlarning aralashmasi bo'lgan ustunlar bitta qiymat emas. MIN va MAX ikkalasi ham A ni beradi, chunki ular NULLlarga e'tibor bermaydilar.

Tahrirlash:

  • NULL tekshiruvi uchun bir xil hisobni olish uchun DISTINCT o'chirildi
  • noyoblikni tekshirish uchun
  • MIN/MAX tekshiruvini qo'shib qo'ydi (Mark Byers tomonidan berilgan javob)
5
qo'shib qo'ydi
+1 bu yaxshi fikr
qo'shib qo'ydi muallif Mark Byers, manba
@MicheleVirgilio: sobit ...
qo'shib qo'ydi muallif gbn, manba
Iltimos, tahrirlashni o'qing.
qo'shib qo'ydi muallif ʞᴉɯ, manba
Qayta ishlamayapti ...
qo'shib qo'ydi muallif ʞᴉɯ, manba
Ajoyib, rahmat!
qo'shib qo'ydi muallif ʞᴉɯ, manba