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

  • apenney888

    apenney888

    27 EKİM 2010
  • BruBearBaby

    BruBearBaby

    25 Ocak 2011
  • kimberly p

    kimberly p

    23 Ocak 2010