SQL Access句子

时间:2017-11-16 00:23:21

标签: sql sql-server ms-access

我一直在尝试使用我在SQL Server Management Studio中创建的句子,在没有运气的情况下访问,在谷歌搜索后,我认为他们使用不同的语言,有人可以帮助我用Access语言转换这些吗?

select c.id_client 'Client ID',
c.client_name 'First Name'
c.client_lname 'Last Name'
from client c join bills b
on c.id_client = b.id_client join bill_detail d
on d.bill_num=b.bill_num
where month (b.date)=3
and year(b.date)= year(getdate())
group by c.id_client, c.client_name,c.client_lname
having d.price > (select avg(prirce) from bill_detail)


select s.id_seller 'Seller ID',
s.seller_name 'First Name',
s.seller_lname 'Last Name',
avg(quantity*d.price),
from sellers s join bills b
on v.id_seller=b.id_seller join bill_detail d
on b.bill_num = d.bill_num
group by s.id_seller, s.seller_name, s.seller_lname
having avg (quantity*d.price) < (select avg(quantity*d.price) from             
bill_detail)

select date 'Date',
sum(quantity) 'Tickets Sold',
sum(quantity*d.price) 'Total Amount Sold',
avg(quantity*d.price) 'Average Amount Sold',
from bills b join bill_detail d
on b.bill_num = d.bill_num
group by date
是的,他们是西班牙人,因此英语很糟糕。并提前感谢。

2 个答案:

答案 0 :(得分:2)

有用的参考资料:

Converting Access Queries to SQL Server

T-SQL Equivalents for Microsoft Access VBA Functions

我认为这些可行..(已经有一段时间了)

SELECT
      client.id_client    [client id]
    , client.client_name  [first name]
    , client.client_lname [last name]
FROM (client
JOIN bills ON client.id_client = bills.id_client)
JOIN bill_detail ON bill_detail.bill_num = bills.bill_num
WHERE MONTH(bills.date) = 3
AND YEAR(bills.date) = YEAR(DATE())
GROUP BY
      client.id_client
    , client.client_name
    , client.client_lname
HAVING d.price > (
      SELECT
            AVG(prirce)
      FROM bill_detail
)
;

出于某种原因,Access喜欢from子句中的括号。不知道为什么。应该有MONTH()&amp;年() 。不要回想一下Access是否像表别名一样,所以我删除它们并且不使用单引号作为列标签(不要这样做也是SQL Server)。

SELECT
      sellers.id_seller    [seller id]
    , sellers.seller_name  [first name]
    , sellers.seller_lname [last name]
    , AVG(quantity * bill_detail.price)
FROM (sellers
JOIN bills ON v.id_seller = bills.id_seller)
JOIN bill_detail ON bills.bill_num = bill_detail.bill_num
GROUP BY
      sellers.id_seller
    , sellers.seller_name
    , sellers.seller_lname
HAVING AVG(quantity * bill_detail.price) < (
      SELECT
            AVG(quantity * bill_detail.price)
      FROM bill_detail
)
;

除了桌子和桌子之外列别名更改这些2应该没问题。

SELECT
      datex                   [date]
    , SUM(quantity)           [tickets sold]
    , SUM(quantity * bill_detail.price) [total amount sold]
    , AVG(quantity * bill_detail.price) [average amount sold]
FROM (bills 
JOIN bill_detail ON bills.bill_num = bill_detail.bill_num)
GROUP BY
      datex
;

答案 1 :(得分:0)

having d.price > (select avg(prirce) from bill_detail)

我认为您应该将其更改为avg(price)而不是avg(prirce)。 (必须只拼写错误)