Nasıl bir kayıt (select top 1) Her kayıt için bir sorgu (SQL Server) birden fazla sütun seçin ana sorguda yapabilir miyim? | Netgez.com
SORU
24 ŞUBAT 2009, Salı


Nasıl bir kayıt (select top 1) Her kayıt için bir sorgu (SQL Server) birden fazla sütun seçin ana sorguda yapabilir miyim?

Bir sorgu bu sözdizimini kullanarak bir sütun seçin Biliyorum:

SELECT A.SalesOrderID, A.OrderDate,
       (
       SELECT TOP 1 B.Foo
       FROM B
       WHERE A.SalesOrderID = B.SalesOrderID
       ) AS FooFromB
FROM A
WHERE A.Date BETWEEN '2000-1-4' AND '2010-1-4'

Ama bir alt sorgu (benim durumumda select top 1 alt sorgu) birden çok sütun kullanmak için doğru sözdizimi nedir? Çok teşekkür ederim.

CEVAP
25 ŞUBAT 2009, ÇARŞAMBA


Burada bir alt sorgunun birden fazla sütun seçmek için nasıl genellikle

SELECT
     A.SalesOrderID,
     A.OrderDate,
     SQ.Max_Foo,
     SQ.Max_Foo2
FROM
     A
LEFT OUTER JOIN
     (
     SELECT
          B.SalesOrderID,
          MAX(B.Foo) AS Max_Foo,
          MAX(B.Foo2) AS Max_Foo2
     FROM
          B
     GROUP BY
          B.SalesOrderID
     ) AS SQ ON SQ.SalesOrderID = A.SalesOrderID

Eğer sen sonuçta yapmaya çalıştığı almak değerlerden en satır ile en yüksek değeri için Foo (yerine max Foo ve max Foo2 - bu aynı şey DEĞİL) sonra aşağıdaki genellikle işe daha iyi bir alt sorgu:

SELECT
     A.SalesOrderID,
     A.OrderDate,
     B1.Foo,
     B1.Foo2
FROM
     A
LEFT OUTER JOIN B AS B1 ON
     B1.SalesOrderID = A.SalesOrderID
LEFT OUTER JOIN B AS B2 ON
     B2.SalesOrderID = A.SalesOrderID AND
     B2.Foo > B1.Foo
WHERE
     B2.SalesOrderID IS NULL

Temelde söylüyorsun, aynı Salesorderıd ile B herhangi bir satır ve daha büyük bir Foo bulamıyorum bana B satır ver.

Bunu PaylaÅŸ:
  • Google+
  • E-Posta
Etiketler:
Sql

YORUMLAR

SPONSOR VÄ°DEO

Rastgele Yazarlar

  • 24 Канал

    24 КанаÐ

    5 ÅžUBAT 2006
  • jbignacio

    jbignacio

    13 Mart 2006
  • JTechTalk

    JTechTalk

    11 Temmuz 2010