Как использовать отдельную функцию на сервере microsoft sql - PullRequest
0 голосов
/ 19 июня 2020

Я пытаюсь выбрать данные из двух таблиц: таблицы продуктов и таблицы stock_in, и, похоже, я не получаю их. поэтому на сервере я запрашиваю все продукты, добавленные в мою базу данных, и количество из таблицы stock_in. поэтому, когда запасы исчерпаны, я должен снова покупать тот же товар. так что после покупки этого товара. в чем проблема? проблема в том, что я использую внутреннее соединение

SELECT DISTINCT add_new_product.product_code, 
                add_new_product.product_name, 
                add_new_product.barcode, 
                add_new_product.sales_rate, 
                add_new_product.discount, 
                add_new_product.vat, 
                stock_in.stock, 
                stock_in.available 
FROM   add_new_product 
       LEFT JOIN stock_in 
              ON add_new_product.product_code = stock_in.product_code 

, и вот что возвращается:

product_code   product_name   barcode    sales_rate   discount   vat   stock   Available
PR-01           Book200       QWER1234     600           0        0      20    Yes
PR-01           Book200       QWER1234     600           0        0      25    Yes
PR-02           Book500       QW23         700           0        0      10    Yes

, но это не то, чего я хочу достичь, я хочу выбрать только один продукт код, который является PR-01 и недавним запасом из таблицы stock_in. Я тестирую это из ms SQL перед использованием в моем приложении, но пока не понимаю. Я не уверен, что мой запрос верен, учитывая, что столбец акций имеет разные значения. Надеюсь, вы все это понимаете, спасибо. Итак, фактические данные, которые я хочу получить, - это

product_code   product_name   barcode    sales_rate   discount   vat   stock   Available
PR-01           Book200       QWER1234     600           0        0      25    Yes
PR-02           Book500       QW23         700           0        0      10    Yes

, а не предыдущие данные. Спасибо.

1 Ответ

0 голосов
/ 19 июня 2020
CREATE TABLE MyTable(product_code varchar(10),product_name varchar(10),
                     barcode varchar(10),sales_rate int,discount int,vat int,
                     stock int,availability varchar(3))
INSERT INTO MyTable(product_code,product_name,barcode,sales_rate,discount,vat,stock,
availability) VALUES ('PR-01','Book200','QWER1234',600,0,0,20,'Yes'),
('PR-01','Book200','QWER1234',600,0,0,25,'Yes'),
('PR-02','Book500','QWE23',700,0,0,10,'Yes') 
3 rows affected
SELECT product_code,product_name
       ,barcode,sales_rate,discount,availability
      ,MAX(stock) as stock FROM MyTable
GROUP BY product_code,product_name
       ,barcode,sales_rate,discount,availability
product_code | product_name | barcode  | sales_rate | discount | availability | stock
:----------- | :----------- | :------- | ---------: | -------: | :----------- | ----:
PR-01        | Book200      | QWER1234 |        600 |        0 | Yes          |    25
PR-02        | Book500      | QWE23    |        700 |        0 | Yes          |    10

db <> fiddle здесь

...