2016-04-11 53 views
0

Şunun gibi bir tablo var. en tam tablodur sayalım ve biz diğer satırların yok: evet/hayır ben CASE deyimi gerek ama nasıl, -diğer yapmak içinsql tablosundaki tüm veri kümesi için durum

ID Place YesNo 
1 A  1 
1 B  1 
1 C  0 
1 D  0 
2 A  0 
2 B  0 
2 C  1 
2 D  0 
3 A  0 
3 B  0 
3 C  0 
3 D  1 

:

ID Place 
1 A 
1 B 
2 C 
3 D 

nasıl böyle bir şey yapabilir itlself veya diğer bazı seçenekler üzerinde tam birleştirme tablosu?

Teşekkürler!

+0

olduğunu Kimliği = 1 ve kimliği = 1 altında kimliği <> 1. Tam katılımın analogu. – HalfPintBoy

+0

Yani ID = 1 olan tablodaki tüm değerler ve tablonun tüm değerleri ID = 2 ile ve sonra üçüncü sütunda 0 veya 1 – HalfPintBoy

+0

için CASE gerçekleştirin, şimdi daha net olduğunu düşündüğüm yazıyı yeniden yayınladım. İlk belirsiz giriş için üzgünüm – HalfPintBoy

cevap

0

Bunu, her biri sütunlardan birinin olası değerlerini listeleyen iki alt sorgu ile başarabilirsiniz. Tüm kombinasyonları almak için iki sonuç daha sonra çaprazlanmalıdır. Son olarak, dış aslında hangi birleşimlerin görmek için orijinal tabloyla bu katılmak gerçekleşir:

İşte
SELECT  first.ID, 
      second.Place, 
      CASE WHEN mytable.ID IS NULL THEN 0 ELSE 1 END AS YesNo 
FROM  (
      SELECT DISTINCT ID 
      FROM mytable 
      ) first 
CROSS JOIN (
      SELECT DISTINCT Place 
      FROM mytable 
      ) second 
LEFT JOIN mytable 
     ON mytable.ID = first.ID 
     AND mytable.Place = second.Place 
ORDER BY first.ID, 
      second.Place 

fikri hem Yeri göstermektir bir SQL fiddle

+0

Yep, bunu bilin. Ama nasıl hem ID = 1 hem de ID <> 1 – HalfPintBoy

+0

için nasıl görüntüleyebilirim, soru güncellemeniz bittikten sonra anlaşıldı. Cevabımı güncelledi. – trincot

İlgili konular