Вставить Select с дополнительными параметрами в SQL Server

Я пытаюсь сделать Insert Select запрос с дополнительными параметрами, но он не работает. Ниже мой код:

INSERT INTO [epmscdc].[dbo].[billing] 
([pid] ,[did] ,[lid] ,[totalamt] ,
[cash] ,[bchange] ,[btrans_date])
SELECT patientlab.did, patientlab.pid, 
       patientlab.lid, laboratory.lprice 
FROM patientlab
INNER JOIN laboratory 
  ON patientlab.lid = laboratory.lid
INNER JOIN doctor 
  ON patientlab.did = doctor.did 
WHERE patientlab.pid = 3 
  AND pstatus = '-', 1000,1000,GETDATE())

Я просто хочу выбрать конкретное поле из других таблиц, и я хочу получить cash,change,trans_date из текстового поля, так как я могу это сделать?

3 ответа

Решение
INSERT INTO [epmscdc].[dbo].[billing] ([pid] ,[did] ,[lid] ,[totalamt] ,[cash] ,[bchange] ,[btrans_date])
SELECT patientlab.did, patientlab.pid, patientlab.lid, laboratory.lprice , 1000,1000,GETDATE()
FROM patientlab
INNER JOIN laboratory ON patientlab.lid = laboratory.lid
INNER JOIN doctor ON patientlab.did = doctor.did 
WHERE patientlab.pid = 3 AND pstatus = '-'

INSERT INTO ..... SELECT ..... Синтаксис вставляет результирующий набор, возвращаемый из оператора select, в конце нельзя использовать запятые для передачи других значений. просто выберите значения в вашем операторе select, и весь возвращенный набор результатов будет вставлен в вашу целевую таблицу.

INSERT INTO [epmscdc].[dbo].[billing] ([pid] ,[did] ,[lid] ,[totalamt] ,[cash] ,[bchange] ,[btrans_date])
SELECT patientlab.did, patientlab.pid, patientlab.lid, laboratory.lprice,@totalamt,@cash,@btransDate 
FROM patientlab
INNER JOIN laboratory ON patientlab.lid = laboratory.lid
INNER JOIN doctor ON patientlab.did = doctor.did 
WHERE patientlab.pid = 3 AND pstatus = '-'

Создайте sqlCommand, добавьте параметры из текстовых полей и выполните.

    INSERT INTO [epmscdc].[dbo].[billing] ([pid] ,[did] ,[lid] ,[totalamt] ,[cash] ,[bchange] ,[btrans_date]) VALUES
(SELECT patientlab.did, patientlab.pid, patientlab.lid, laboratory.lprice,1000,1000,GETDATE() 
            FROM patientlab
            INNER JOIN laboratory ON patientlab.lid = laboratory.lid
            INNER JOIN doctor ON patientlab.did = doctor.did 
            WHERE patientlab.pid = 3 AND pstatus = '-') As b
Другие вопросы по тегам