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

  • lilstevie89

    lilstevie89

    25 Mart 2011
  • NLthomas21

    NLthomas21

    20 Mayıs 2008
  • The Dubstep FX

    The Dubstep

    5 Mart 2011