首页 > 解决方案 > 哪些发票大于 300 美元,在 2008 年 7 月 15 日之前支付,并且是 TermsID 2 或 3

问题描述

我的家庭作业问题离我很远,但我有点困惑代码将如何为 date 和 termsID 2 或 3 付费?

编写返回 VendorID、InvoiceNumber、InvoiceDate、InvoiceTotal、TermsID 和 PaymentDate 的 SELECT 语句,回答以下问题:哪些发票大于 300 美元,在 2008 年 7 月 15 日之前支付,并且是 TermsID 2 或 3?(将返回 18 条记录)

选择 VendorID、invoiceNumber、InvoiceDate、InvoiceTotal、TermsID、PaymentDate From invoices Where invoices > 300 和

标签: sqlsql-server

解决方案


这里有一些提示:

如果您的付费日期列是(应该是)日期,您可以使用<运算符 jsut 构造一个谓词来查找日期之前的内容,就像使用数字一样。以后的日期更大:

--find all people born before 1970 jan 01
SELECT * FROM person WHERE birthdate < '1970-01-01'

'以 yyyy-MM-dd 格式将您的日期作为字符串(由 包围)传递以进行比较。db 会将字符串转换为日期并以数字方式运行比较


当您要查找位于一组术语中的列时,请使用 IN 运算符:

SELECT * FROM person WHERE jobrole IN ('manager', 'developer', 'support')

SELECT * FROM creature WHERE numberoflegs IN (2,4,6)

IN 的工作方式如下:

SELECT * FROM creature WHERE numberoflegs =2 OR numberoflegs = 4 OR numberoflegs = 6

始终,在混合 AND 和 OR 时始终包含括号,以使数据库和其他阅读您的代码的人清楚,以何种方式组合什么

--for this...
SELECT * FROM person WHERE name = 'john' and age = 32 or city = 'paris'

--which of these is it? very different things!
SELECT * FROM person WHERE (name = 'john' and age = 32) or city = 'paris'
SELECT * FROM person WHERE name = 'john' and (age = 32 or city = 'paris')

推荐阅读