2015-07-29 6 views
-4

У меня есть ситуации, когда мне нужно вытащить данные из 2 таблиц, и это требованиеSQL Server Синтаксис запросов требуется

Table1

Имя файла | FileUpLoaded

Table2

ID | Имя файла | InsertedDate

Я хотел бы получить статус файлов груза - с двумя условиями Объединить две таблицы по Имени файла, где

  1. FileUpLoaded = 1 (при полной загрузке)
  2. Графа ID на сегодняшний день составляет +/- 10% (где-то рядом) количество ID от 3 дней до

Так что это помогает мне понять, что оно загружено правильно.

+0

Можете ли вы показать нам, что у вас есть пробовал? – DhruvJoshi

+0

Пользователь «Заказать», а затем используйте TOP XXX, где XXX - количество идентификаторов. Вам нужно будет использовать запрос с двумя Selects для получения Count of ID. – jdweng

+0

Похоже, вы могли бы использовать оператор select, где в предложении WHERE вы используете WHERE EXISTS (SELECT ... FROM ...) Немного сложно написать хороший пример, ничего не зная о ваших таблицах. – Tom

ответ

0

Это звучит как очень сложный набор логики обработки. У вас есть обоснование того, что вы пытаетесь достичь, и это объяснит это? Я подозреваю, что просто написать запрос для вас не сильно продвинет ваше понимание.

Тем не менее, вот запрос по большей части в любом случае, я полагаю, что ваши таблицы достаточно малы, что это будет работать достаточно хорошо без вызова функций окна:

DECLARE @QueryDate DATETIME = GETDATE(); 
DECLARE @DaysBefore INT = 3; 

SELECT 
    FileName = Table1.Filename, 
    OnThisDay = COALESCE(OnQueryDate.Tally, 0), 
    BeforeThisDay = COALESCE(BeforeQueryDate.Tally, 0) 
FROM 
    Table1 
     OUTER APPLY 
     (
      SELECT Tally = COUNT(1) FROM Table2 WHERE Table2.FileName = Table1.Filename AND 
       Table2.InsertedDate BETWEEN CONVERT(date, @QueryDate) AND DATEADD(DAY, 1, CONVERT(date, @QueryDate)) 
     ) AS OnQueryDate, 
     OUTER APPLY 
     (
      SELECT Tally = COUNT(1) FROM Table2 WHERE Table2.FileName = Table1.Filename AND  
       Table2.InsertedDate BETWEEN DATEADD(DAY,[email protected],CONVERT(date, @QueryDate) AND CONVERT(date, @QueryDate) 
     ) AS BeforeQueryDate 
WHERE 
    Table1.FileUploaded = 1 
    AND 
    ... Whatever conditions you want to apply here. 
+0

Спасибо Стив, я не так хорошо разбираюсь в SQL, но имею требование получить это. как бы я ни старался. Я попробую применить эту логику на своих столах и сообщить вам, как это происходит ... Спасибо –

Смежные вопросы