2012-05-18 4 views
-1

Это мой запросНужна помощь, чтобы получить SQL выходные данные запроса, как этот

select 
    dtfromdate, dttodate, 
    (SELECT DATEDIFF(day, dtfromdate, dtTodate)) AS NumberOfDays, 
    fltspl 
from dbo.tblHR_SpecialLeaveTransaction 
where 
    nvrempcode = 'MCL1218' and nvrstatus = 1 
order by 
    dtfromdate 

Результат:

dtfromdate    dttodate    NumberOfDays fltspl 
----------------------- ----------------------- ------------ ---------------------- 
2012-05-01 00:00:00  2012-05-31 00:00:00  30   30 

Другой запрос

select 
    dtfromdate, dtTodate, 
    (SELECT DATEDIFF(day, dtfromdate, dtTodate)) AS NumberOfDays, 
    fltcl, fltsl, fltpl, fltcompoff, fltod, fltlop, 
    isnull(fltflexiL, 0) as fltflexiL 
from 
    tblhr_leavetransaction 
where 
    nvrempcode = 'MCL1218' and nvrstatus = 1 
order by 
    dtfromdate 

Результат:

dtfromdate    dtTodate    NumberOfDays fltcl     fltsl     fltpl     fltcompoff    fltod     fltlop     fltflexiL 
----------------------- ----------------------- ------------ ---------------------- ---------------------- ---------------------- ---------------------- ---------------------- ---------------------- ---------------------- 
2011-01-14 00:00:00  2011-01-14 00:00:00  0   1      0      0      0      0      0      0 
2011-01-17 00:00:00  2011-01-17 00:00:00  0   1      0      0      0      0      0      0 
2011-01-25 00:00:00  2011-01-25 00:00:00  0   0      0      0      0      1      0      0 
2011-04-01 00:00:00  2011-04-02 00:00:00  1   0      0      0      0      2      0      0 
2011-05-14 00:00:00  2011-05-14 00:00:00  0   0      0      0      0      1      0      0 
2011-05-16 00:00:00  2011-05-16 00:00:00  0   0      0      0      1      0      0      0 
2011-05-18 00:00:00  2011-05-18 00:00:00  0   1      0      0      0      0      0      0 
2011-05-19 00:00:00  2011-05-20 00:00:00  1   0      2      0      0      0      0      0 
2011-05-21 00:00:00  2011-05-21 00:00:00  0   1      0      0      0      0      0      0 
2011-05-23 00:00:00  2011-05-23 00:00:00  0   0      0      0      1      0      0      0 

Мне нужен выход, как это,

dtfromdate    dtTodate    NumberOfDays fltcl     fltsl     fltpl     fltcompoff    fltod     fltlop     fltflexiL    fltspl 
----------------------- ----------------------- ------------ ---------------------- ---------------------- ---------------------- ---------------------- ---------------------- ---------------------- ---------------------- ---------- 
2011-01-14 00:00:00  2011-01-14 00:00:00  0   1      0      0      0      0      0      0       0 
2011-01-17 00:00:00  2011-01-17 00:00:00  0   1      0      0      0      0      0      0       0 
2011-01-25 00:00:00  2011-01-25 00:00:00  0   0      0      0      0      1      0      0       0 
2011-04-01 00:00:00  2011-04-02 00:00:00  1   0      0      0      0      2      0      0       0 
2011-05-14 00:00:00  2011-05-14 00:00:00  0   0      0      0      0      1      0      0       0 
2011-05-16 00:00:00  2011-05-16 00:00:00  0   0      0      0      1      0      0      0       0 
2011-05-18 00:00:00  2011-05-18 00:00:00  0   1      0      0      0      0      0      0       0 
2011-05-19 00:00:00  2011-05-20 00:00:00  1   0      2      0      0      0      0      0       0 
2011-05-21 00:00:00  2011-05-21 00:00:00  0   1      0      0      0      0      0      0       0 
2011-05-23 00:00:00  2011-05-23 00:00:00  0   0      0      0      1      0      0      0       0 
2012-05-01 00:00:00  2012-05-31 00:00:00  30   0      0      0      0      0      0      0       30 
+3

Можете ли вы объяснить ** в словах **, что вы хотите в вашем выводе ?? Просто бросая груды данных у нас и позволяя нам угадать, что вы хотите, не очень полезно ... например. в чем разница между вашей второй и третьей сетью данных? Они выглядят почти одинаково ..... –

+0

проверить последнюю строку этой сетки .... –

+0

Предлагаю вам попробовать группу по предложению. – Eon

ответ

1

Похоже, вы просто хотите union два запросов вместе. Для этого оба запроса должны включать все столбцы, просто установите для них нуль/нуль, если необходимо. Еще одна небольшая трудность заключается в том, что вы не можете использовать order by при объединении, если только вы не подберете все это.

Без order by:

select 
    dtfromdate, dttodate, 
    (SELECT DATEDIFF(day, dtfromdate, dtTodate)) AS NumberOfDays, 
    0 as fltcl, 
    0 as fltsl, 
    0 as fltpl, 
    0 as fltcompoff, 
    0 as fltod, 
    0 as fltlop, 
    0 as fltflexiL, 
    fltspl 
from dbo.tblHR_SpecialLeaveTransaction 
where 
    nvrempcode = 'MCL1218' and nvrstatus = 1 
union 
select 
    dtfromdate, dtTodate, 
    (SELECT DATEDIFF(day, dtfromdate, dtTodate)) AS NumberOfDays, 
    fltcl, fltsl, fltpl, fltcompoff, fltod, fltlop, 
    isnull(fltflexiL, 0) as fltflexiL , 
    0 as fltspl 
from 
    tblhr_leavetransaction 
where 
    nvrempcode = 'MCL1218' and nvrstatus = 1 

Если вам нужен конкретный заказ:

SELECT * FROM 
(
    select 
     dtfromdate, dttodate, 
     (SELECT DATEDIFF(day, dtfromdate, dtTodate)) AS NumberOfDays, 
     0 as fltcl, 
     0 as fltsl, 
     0 as fltpl, 
     0 as fltcompoff, 
     0 as fltod, 
     0 as fltlop, 
     0 as fltflexiL, 
     fltspl 
    from dbo.tblHR_SpecialLeaveTransaction 
    where 
     nvrempcode = 'MCL1218' and nvrstatus = 1 
    union 
    select 
     dtfromdate, dtTodate, 
     (SELECT DATEDIFF(day, dtfromdate, dtTodate)) AS NumberOfDays, 
     fltcl, fltsl, fltpl, fltcompoff, fltod, fltlop, 
     isnull(fltflexiL, 0) as fltflexiL , 
     0 as fltspl 
    from 
     tblhr_leavetransaction 
    where 
     nvrempcode = 'MCL1218' and nvrstatus = 1 
) src 
order by dtfromdate 
+0

Небольшое предупреждение: для производной таблицы нужен псевдоним. –

+0

@ NikolaMarkovinović - Thx, ответ обновлен. – Jamiec

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