이 여기 있습니다! 이것이 당신의 SQL입니다.
SET IDENTITY_INSERT Billing OFF
INSERT INTO Billing
(
FolioID
, BillingCategoryID
, BillingDescription
, BillingAmount
, BillingItemQty
, BillingItemDate
)
SELECT
24
, 1
, 'Room'
, CASE
WHEN CAST(GETDATE() AS TIME) <= '12:00' THEN QuotedRate * Nights
WHEN CAST(GETDATE() AS TIME) >= '13:00' THEN (QuotedRate * Nights) + (QuotedRate * Nights * .50)
ELSE (QuotedRate * Nights) + (QuotedRate * Nights * .50)
END
, 1
, GETDATE()
FROM Folio
WHERE FolioID = 24
SQL Fiddle이 다운되었으므로 테이블을 생성하고 SQL을 로컬로 실행했습니다. 아래를 참조하십시오. 여기
개별 SQL 스크립트입니다. 당신은 등 당신의 IDENTITY 열
CREATE TABLE Billing (
FolioID INT NOT NULL,
BillingCategoryID INT NULL,
BillingDescription VARCHAR(100) NOT NULL,
BillingAmount DECIMAL(9,2) NULL,
BillingItemQty NUMERIC(5,0) NULL,
BillingItemDate DATETIME NULL
)
CREATE TABLE Folio
(
FolioID INT NOT NULL,
QuotedRate DECIMAL(6,2) NOT NULL,
Nights INT NOT NULL
)
INSERT INTO Folio(FolioID, QuotedRate, Nights)
VALUES (24, 100.00, 5)
INSERT INTO Billing (
FolioID
, BillingCategoryID
, BillingDescription
, BillingAmount
, BillingItemQty
, BillingItemDate
)
SELECT
24
, 1
, 'Room'
, CASE
WHEN CAST(GETDATE() AS TIME) <= '12:00' THEN QuotedRate * Nights
WHEN CAST(GETDATE() AS TIME) >= '13:00' THEN (QuotedRate * Nights) + (QuotedRate * Nights * .50)
ELSE (QuotedRate * Nights) + (QuotedRate * Nights * .50)
END
, 1
, GETDATE()
FROM Folio
WHERE FolioID = 24
SELECT * FROM Billing
에 대한 수정 싶어 수도 그게 내가 당신 INSERT
문에서 값으로 무엇을보고 있기 때문에 나는 FolioID = 24
을 사용했다. 그러나이 방법을 사용할 수 있습니다 FolioID
다음 조건은 시간대에 따라 정확한 계산을 제공합니다. "just in case"라는 기본 조항도 있어야합니다.이 절은 ELSE
부분입니다.
SELECT 'Total Lodging' =
CASE
WHEN CAST(GETDATE() AS TIME) <= '12:00' THEN QuotedRate * Nights
WHEN CAST(GETDATE() AS TIME) >= '13:00' THEN (QuotedRate * Nights) + ((QuotedRate * Nights) * .50)
ELSE (QuotedRate * Nights) + ((QuotedRate * Nights) * .50) -- Default rate
END
FROM Folio
내가 내
CASE
문 작동을 보장하기 위해 테이블에서 SELECT는 - 보내고없이 SQL Server의 조건을 사용, 아래를 참조하십시오.
사용'CASE WHEN' 문. 하지만 비즈니스 계층 (.net)에서 "논리"작업을하고 데이터 저장/업데이트에만 'SQL 쿼리'를 사용하는 것이 더 좋다고 생각합니다. – Fabio
이것은 답변과 직접 관련이 없지만 게스트에게 비용은 어떻게 부과 되나요? 그들이 오후 12시 30 분에 체크 아웃한다면? –