Вставить 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