Birden çok sorgudan bilgi almak için tek bir satırda zor bir durum var. aşağıdaki verileri tutanİki sorguyu (tümünü birleştir) bir satırda nasıl birleştiririm?
CpuUage:
Time time
Group char(10)
Subsys char(4)
Jobs int
Cpu int
:
aşağıdaki tabloyu düşünün her satır gerekiyordu bunun altında sağdaTime Group Subsys Jobs Cpu
----- ------ ------ ---- ---
00:00 group1 NORM 1 101 (grp1-norm) A1
01:00 group1 SYS7 3 102 (grp1-sys7) A2
01:00 group1 NORM 5 104 (grp1-norm) A1
02:00 group1 NORM 7 108 (grp1-norm) A1
02:00 group2 NORM 9 116 (grp2-norm) B1
02:00 group3 SYS7 11 132 (grp3-sys7) C2
03:00 group1 SYS7 13 164 (grp1-sys7) A2
03:00 group1 IGNR 99 228 (grp1-ignr) --
belirteçleri (A1
örneğin) raporunda bölümlerdir etkilemek.
Her kullanıcı grubu için tek bir satırı döndürebilen ancak bir şartla bir sorguya ihtiyacım var. Jobs
ve Cpu
için değerler, alt sistem kimliğine bağlı olarak farklı sütunlara gitmeli ve yalnızca SYS7
ve NORM
altsistem kimlikleriyle ilgileniyorum. ,
<------ 1 ------> <------ 2 ------>
Group NormJobs NormCpu Sys7Jobs Sys7Cpu
------ -------- ------- -------- -------
A: group1 13 313 16 266
B: group2 9 116 0 0
C: group3 0 0 11 164
Bizim eski raporlama çözümü (a union all
ile) birden fazla sorgu çalıştırabilir:
Yani, örneğin, biz (A/B/1/2
bit geri yukarıdaki satırlara bir çapraz referans vardır) aşağıdaki gerek
Group NormJobs NormCpu Sys7Jobs Sys7Cpu
------ -------- ------- -------- -------
group1 13 313 0 0
group1 0 0 16 266
birleştirilmiş edildi çizgisinde:
, böylece daha sonra işlem sonrası sıraları, aynı grup adı kombinleyecektikMaalesef, yeni çözümümüz işlem sonrası işleme izin vermiyor ve bunların hepsi SQL sorgusunda yapılmalıdır.
SYS7
satır, NORM
satır içeren grupların olabileceğini akılda tutarak, ya bunu başarmanın en iyi yolu nedir?
Tablonun bir dış seçim içinden sorgulanmasını düşündüm, ancak bu performansın bir sonucu olabilir. Ben dış sorgu Sadece için NORM
işler beri dış sorgu yapamaz (NORM ve SYS7 alt sistemleri daha sonra her alanı için bir alt sorgu çalıştırmak dahil etmesi gerekir çünkü
ek olarak, bu acıyı olurdu sadece SYS7
satırlı bir grubun varlığı bu şekilde yakalanamazdı).
Uygun bir çözüm bulmak için sol orta-iç-off-add-magic sihrinizden herhangi birini örebilir misiniz?
Satıcıdan bağımsız bir çözüm tercih ederim, ancak satıcıya özel bir şekilde gitmeniz gerekirse, platform DB2'dir. Yine de, diğer platformlar en azından bana neyi denemeleri gerektiğiyle ilgili bir fikir verebilir, ben de onları görmekten mutlu olurum.böylesi daha hızlı olması gerektiği gibi
, görmek ilgi duyarım sonuçlar. İçgüdüsel olarak, bir şekilde herhangi bir çözümün CASE bildiriminin görevini yerine getirmesini beklerim. Yani "Groupname = g ve subsys = s ise o zaman agrega ekleyin (g, s)". Veri alma açısından bir fark daha beklerim. Bununla birlikte, bir DBMS'nin belirli grupları toplarken gerekli olan karşılaştırma sayısını azaltmak için dizin bilgisini kullanabilme olasılığına açığım. Fiziksel sıralama düzeninizin (kümelenmiş dizin) (alt kümeler, grup adı) olduğu test permütasyonlarınıza dahil etmenizi öneririm. –