Я хочу сгруппировать свою запись данных под другим «staff_id».
Мой запрос без GROUP BY работает безупречно, возвращая все нужные строки в обычной таблице. Я вывожу его в asp.net ListView, и он выглядит примерно так:
Staff_ID Field1 Field2 Field3 Field4 ...........
Staff_ID Field1 Field2 Field3 Field4 ...........
Staff_ID Field1 Field2 Field3 Field4 ...........
Теперь я пытаюсь заставить их отображаться в группе asp.net ListView вместе по их идентификатору.
Например, вот так:
Staff_ID TOTALAMT
Field1 Field2 Field3 Field4 Field5
Field1 Field2 Field3 Field4 Field5
Staff_ID TOTALAMT
Field1 Field2 Field3 Field4 Field5
Field1 Field2 Field3 Field4 Field5
В любом случае, чтобы сделать это? Я пробовал GROUP BY, как показано ниже, но я получаю ошибку:
Msg 8120, Level 16, State 1, Line 4
Column 'CLAIM_APPLICATION.CREATE_DATE' is invalid in the select list because
it is not contained in either an aggregate function or the GROUP BY clause.
Вот мой запрос:
SELECT
'' Seq,
'' Doc_Type,
left(CONVERT(varchar, A.CREATE_DATE, 112),8)Post_date,
left(CONVERT(varchar, A.CREATE_DATE, 112),8)Doc_date,
('S.C-'+left(CONVERT(varchar, A.CREATE_DATE, 112),6)+'-'+ A.user_id)Header,
('S.Claim-'+left(CONVERT(varchar, A.CREATE_DATE, 112),6))Header_Ref,
'' Trx_date,
'MYR' Curr,
'' Exh_rate,
'' Line_no,
'S' CR_DB,
'' Nega_post,
C.GL,
A.AMT,
'' Loc_curr,
'SC-'+ A.CLINIC_SHOP Text1,
B.staff_id,
''A,''B,''C,''D,
'I0'Tax_code,''WBS,''E,
A.cost_centre,
''F,
'0003' Pay_term,
left(CONVERT(varchar, getdate(), 112),8)Base_date
FROM CLAIM_APPLICATION AS A INNER JOIN
CLAIM_USER_DETAIL AS B ON A.user_id = B.user_id INNER JOIN
CLAIM_TYPE AS C ON A.CLAIM_ID = C.CLAIM_ID
WHERE (A.CLAIM_ID NOT IN (20, 21))
and (CONVERT(varchar, A.CREATE_DATE, 111) >= '2011/01/01')
and (CONVERT(varchar, A.CREATE_DATE, 111) <= '2011/04/30')
and (A.STATUS ='A')
-- and A.REF_NO <> 'MYSGCB'
-- and (A.user_id <>'bkkhoo')
GROUP BY B.staff_id
ORDER BY B.name