2013-10-01 7 views
0

Я хочу считать данные в таблице 8 таблицы по дате и привести его в одной таблицеКак выбрать из таблицы таблицы в таблицу?

______|| table 1 || table 2 || table 3 || table 4 || 
date1 || 7,000 || 8,000 || 9,000 || 10,000 || 
date1 || 7,000 || 8,000 || 9,000 || 10,000 || 
+0

я имею в виду, что у меня есть 8 таблицы для подсчета. извините за непонятные – Anue

+0

Пожалуйста, просмотрите ваш вопрос, так как неясно. Кроме того, я не вижу таблицу 8? – user172839

ответ

0

Если вы в SQL Server:

;With Table1CTE AS 
(
    SELECT CONVERT(DATETIME,CONVERT(VARCHAR,Date1,112)) AS Date1, 
      COUNT(*) AS Table1 
    FROM Table1 
    GROUP BY CONVERT(DATETIME,CONVERT(VARCHAR,Date1,112)) 
) 
,Table2CTE AS 
(
    SELECT CONVERT(DATETIME,CONVERT(VARCHAR,Date1,112)) AS Date1, 
      COUNT(*) AS Table2 
    FROM Table2 
    GROUP BY CONVERT(DATETIME,CONVERT(VARCHAR,Date1,112)) 
) 
,Table3CTE AS 
(
    SELECT CONVERT(DATETIME,CONVERT(VARCHAR,Date1,112)) AS Date1, 
      COUNT(*) AS Table3 
    FROM Table3 
    GROUP BY CONVERT(DATETIME,CONVERT(VARCHAR,Date1,112)) 
) 
,Table4CTE AS 
(
    SELECT CONVERT(DATETIME,CONVERT(VARCHAR,Date1,112)) AS Date1, 
      COUNT(*) AS Table4 
    FROM Table4 
    GROUP BY CONVERT(DATETIME,CONVERT(VARCHAR,Date1,112)) 
) 
SELECT Date1, 
     Table1, 
     Table2, 
     Table3, 
     Table4 
FROM Table1CTE T1 
     FULL OUTER JOIN Table2CTE T2 
      ON T1.date1 = T2.date1 
     FULL OUTER JOIN Table3CTE T3 
      ON T1.date1 = T3.date1 
     FULL OUTER JOIN Table4CTE T4 
      ON T1.date1 = T4.date1 

Я использую FULL OUTER JOIN, как я не знаю, все даты присутствуют во всех таблицах.

Вы всегда можете попробовать присоединиться подзапросов:

SELECT Date1, 
     Table1, 
     Table2, 
     Table3, 
     Table4 
FROM (
      SELECT CONVERT(DATETIME,CONVERT(VARCHAR,Date1,112)) AS Date1, 
        COUNT(*) AS Table1 
      FROM Table1 
      GROUP BY CONVERT(DATETIME,CONVERT(VARCHAR,Date1,112)) 
     ) T1 
     FULL OUTER JOIN 
     (
      SELECT CONVERT(DATETIME,CONVERT(VARCHAR,Date1,112)) AS Date1, 
        COUNT(*) AS Table2 
      FROM Table2 
      GROUP BY CONVERT(DATETIME,CONVERT(VARCHAR,Date1,112)) 
     ) T2 
      ON T1.date1 = T2.date1 
     FULL OUTER JOIN 
     (
      SELECT CONVERT(DATETIME,CONVERT(VARCHAR,Date1,112)) AS Date1, 
        COUNT(*) AS Table3 
      FROM Table3 
      GROUP BY CONVERT(DATETIME,CONVERT(VARCHAR,Date1,112)) 
     ) T3 
      ON T1.date1 = T3.date1 
     FULL OUTER JOIN 
     (
      SELECT CONVERT(DATETIME,CONVERT(VARCHAR,Date1,112)) AS Date1, 
        COUNT(*) AS Table4 
      FROM Table4 
      GROUP BY CONVERT(DATETIME,CONVERT(VARCHAR,Date1,112)) 
     ) T4 
      ON T1.date1 = T4.date1 
+0

для date1 У меня есть данные вот так '2011-02-09 20: 25: 42.000' , и результат не с каждым днем ​​ Как я могу справиться с этим, пожалуйста, помогите мне снова. – Anue

+0

@Anue 'CONVERT (DATETIME, CONVERT (VARCHAR, Date1,112))' получит вам часть даты 'Date1'. Я надеюсь, что у меня есть правильный вопрос ... –

+0

ОК, теперь это работа, я буду использовать и проверять какое-то время – Anue

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